window.TILE_VERSION = {
    'ditu': {
        'normal': {
            'version': '088',
            'updateDate': '20190704'
        },
        'satellite': {
            'version': '009',
            'updateDate': '20190704'
        },
        'normalTraffic': {
            'version': '081',
            'updateDate': '20190704'
        },
        'satelliteTraffic': {
            'version': '083',
            'updateDate': '20190704'
        },
        'mapJS': {
            'version': '104',
            'updateDate': '20190704'
        },
        'satelliteStreet': {
            'version': '083',
            'updateDate': '20190704'
        },
        'earthVector': {
            'version': '001',
            'updateDate': '20190704'
        }
    },
    'webapp': {
        'high_normal': {
            'version': '001',
            'updateDate': '20190704'
        },
        'lower_normal': {
            'version': '002',
            'updateDate': '20190704'
        }
    },
    'api_for_mobile': {
        'vector': {
            'version': '002',
            'updateDate': '20190704'
        },
        'vectorIcon': {
            'version': '002',
            'updateDate': '20190704'
        }
    }
}
window.BMAP_AUTHENTIC_KEY = 'E4805d16520de693a3fe707cdc962045';
(function () {
    function aa (a) {
        throw a
    }
    var l = void 0
       var p = !0
       var s = null
       var t = !1
    function u () {
        return function () {}
    }
    function ca (a) {
        return function (b) {
            this[a] = b
        }
    }
    function x (a) {
        return function () {
            return this[a]
        }
    }
    function ea (a) {
        return function () {
            return a
        }
    }
    var fa; var ga = []
    function ha (a) {
        return function () {
            return ga[a].apply(this, arguments)
        }
    }
    function ia (a, b) {
        return ga[a] = b
    }
    var ja; var z = ja = z || {
        version: '1.3.4'
    }
    z.ea = '$BAIDU$'
    window[z.ea] = window[z.ea] || {}
    z.object = z.object || {}
    z.extend = z.object.extend = function (a, b) {
        for (var c in b) { b.hasOwnProperty(c) && (a[c] = b[c]) }
        return a
    }

    z.R = z.R || {}
    z.R.da = function (a) {
        return typeof a === 'string' || a instanceof String ? document.getElementById(a) : a && a.nodeName && (a.nodeType == 1 || a.nodeType == 9) ? a : s
    }

    z.da = z.Ec = z.R.da
    z.R.aa = function (a) {
        a = z.R.da(a)
        if (a === s) { return a }
        a.style.display = 'none'
        return a
    }

    z.aa = z.R.aa
    z.lang = z.lang || {}
    z.lang.og = function (a) {
        return Object.prototype.toString.call(a) == '[object String]'
    }

    z.og = z.lang.og
    z.lang.km = function (a) {
        if (Object.prototype.toString.call(a) === '[object Object]') {
            for (var b in a) { return t }
            return p
        }
        return t
    }

    z.km = z.lang.km
    z.R.Dj = function (a) {
        return z.lang.og(a) ? document.getElementById(a) : a
    }

    z.Dj = z.R.Dj
    z.R.getElementsByClassName = function (a, b) {
        var c
        if (a.getElementsByClassName) { c = a.getElementsByClassName(b) } else {
            var e = a
            e == s && (e = document)
            c = []
            var e = e.getElementsByTagName('*'); var f = e.length; var g = RegExp('(^|\\s)' + b + '(\\s|$)'); var i; var k
            for (k = i = 0; i < f; i++) {
 g.test(e[i].className) && (c[k] = e[i],
                k++)
}
        }
        return c
    }

    z.getElementsByClassName = z.R.getElementsByClassName
    z.R.contains = function (a, b) {
        var c = z.R.Dj
           var a = c(a)
           var b = c(b)
        return a.contains ? a != b && a.contains(b) : !!(a.compareDocumentPosition(b) & 16)
    }

    z.ga = z.ga || {};
    /msie (\d+\.\d)/i.test(navigator.userAgent) && (z.ga.ma = z.ma = document.documentMode || +RegExp.$1)
    var ka = {
        cellpadding: 'cellPadding',
        cellspacing: 'cellSpacing',
        colspan: 'colSpan',
        rowspan: 'rowSpan',
        valign: 'vAlign',
        usemap: 'useMap',
        frameborder: 'frameBorder'
    }
    z.ga.ma < 8 ? (ka['for'] = 'htmlFor',
    ka['class'] = 'className') : (ka.htmlFor = 'for',
    ka.className = 'class')
    z.R.NF = ka
    z.R.rE = function (a, b, c) {
        a = z.R.da(a)
        if (a === s) { return a }
        if (b == 'style') { a.style.cssText = c } else {
            b = z.R.NF[b] || b
            a.setAttribute(b, c)
        }
        return a
    }

    z.rE = z.R.rE
    z.R.sE = function (a, b) {
        a = z.R.da(a)
        if (a === s) { return a }
        for (var c in b) { z.R.rE(a, c, b[c]) }
        return a
    }

    z.sE = z.R.sE
    z.Hk = z.Hk || {};
    (function () {
        var a = RegExp('(^[\\s\\t\\xa0\\u3000]+)|([\\u3000\\xa0\\s\\t]+$)', 'g')
        z.Hk.trim = function (b) {
            return ('' + b).replace(a, '')
        }
    }
    )()
    z.trim = z.Hk.trim
    z.Hk.yo = function (a, b) {
        var a = '' + a
           var c = Array.prototype.slice.call(arguments, 1)
           var e = Object.prototype.toString
        if (c.length) {
            c = c.length == 1 ? b !== s && /\[object Array\]|\[object Object\]/.test(e.call(b)) ? b : c : c
            return a.replace(/#\{(.+?)\}/g, function (a, b) {
                var i = c[b]
                e.call(i) == '[object Function]' && (i = i(b))
                return typeof i === 'undefined' ? '' : i
            })
        }
        return a
    }

    z.yo = z.Hk.yo
    z.R.tc = function (a, b) {
        a = z.R.da(a)
        if (a === s) { return a }
        for (var c = a.className.split(/\s+/), e = b.split(/\s+/), f, g = e.length, i, k = 0; k < g; ++k) {
            i = 0
            for (f = c.length; i < f; ++i) {
 if (c[i] == e[k]) {
                    c.splice(i, 1)
                    break
                }
}
        }
        a.className = c.join(' ')
        return a
    }

    z.tc = z.R.tc
    z.R.bx = function (a, b, c) {
        a = z.R.da(a)
        if (a === s) { return a }
        var e
        if (a.insertAdjacentHTML) { a.insertAdjacentHTML(b, c) } else {
            e = a.ownerDocument.createRange()
            b = b.toUpperCase()
            if (b == 'AFTERBEGIN' || b == 'BEFOREEND') {
                e.selectNodeContents(a)
                e.collapse(b == 'AFTERBEGIN')
            } else {
                b = b == 'BEFOREBEGIN'
                e[b ? 'setStartBefore' : 'setEndAfter'](a)
                e.collapse(b)
            }
            e.insertNode(e.createContextualFragment(c))
        }
        return a
    }

    z.bx = z.R.bx
    z.R.show = function (a) {
        a = z.R.da(a)
        if (a === s) { return a }
        a.style.display = ''
        return a
    }

    z.show = z.R.show
    z.R.PC = function (a) {
        a = z.R.da(a)
        return a === s ? a : a.nodeType == 9 ? a : a.ownerDocument || a.document
    }

    z.R.eb = function (a, b) {
        a = z.R.da(a)
        if (a === s) { return a }
        for (var c = b.split(/\s+/), e = a.className, f = ' ' + e + ' ', g = 0, i = c.length; g < i; g++) { f.indexOf(' ' + c[g] + ' ') < 0 && (e = e + (' ' + c[g])) }
        a.className = e
        return a
    }

    z.eb = z.R.eb
    z.R.TA = z.R.TA || {}
    z.R.zl = z.R.zl || []
    z.R.zl.filter = function (a, b, c) {
        for (var e = 0, f = z.R.zl, g; g = f[e]; e++) {
 if (g = g[c]) { b = g(a, b) }
}
        return b
    }

    z.Hk.CN = function (a) {
        return a.indexOf('-') < 0 && a.indexOf('_') < 0 ? a : a.replace(/[-_][^-_]/g, function (a) {
            return a.charAt(1).toUpperCase()
        })
    }

    z.R.t_ = function (a) {
        z.R.ws(a, 'expand') ? z.R.tc(a, 'expand') : z.R.eb(a, 'expand')
    }

    z.R.ws = function (a) {
        if (arguments.length <= 0 || typeof a === 'function') { return this }
        if (this.size() <= 0) { return t }
        var a = a.replace(/^\s+/g, '').replace(/\s+$/g, '').replace(/\s+/g, ' '); var b = a.split(' '); var c
        z.forEach(this, function (a) {
            for (var a = a.className, f = 0; f < b.length; f++) {
 if (!~(' ' + a + ' ').indexOf(' ' + b[f] + ' ')) {
                    c = t
                    return
                }
}
            c !== t && (c = p)
        })
        return c
    }

    z.R.ng = function (a, b) {
        var c = z.R
           var a = c.da(a)
        if (a === s) { return a }
        var b = z.Hk.CN(b)
           var e = a.style[b]
        if (!e) {
 var f = c.TA[b]
               var e = a.currentStyle || (z.ga.ma ? a.style : getComputedStyle(a, s))
               var e = f && f.get ? f.get(a, e) : e[f || b]
}
        if (f = c.zl) { e = f.filter(b, e, 'get') }
        return e
    }

    z.ng = z.R.ng;
    /opera\/(\d+\.\d)/i.test(navigator.userAgent) && (z.ga.opera = +RegExp.$1)
    z.ga.qL = /webkit/i.test(navigator.userAgent)
    z.ga.PX = /gecko/i.test(navigator.userAgent) && !/like gecko/i.test(navigator.userAgent)
    z.ga.DD = document.compatMode == 'CSS1Compat'
    z.R.ja = function (a) {
        a = z.R.da(a)
        if (a === s) { return a }
        var b = z.R.PC(a)
           var c = z.ga
           var e = z.R.ng
        c.PX > 0 && b.getBoxObjectFor && e(a, 'position')
        var f = {
            left: 0,
            top: 0
        }; var g
        if (a == (c.ma && !c.DD ? b.body : b.documentElement)) { return f }
        if (a.getBoundingClientRect) {
            a = a.getBoundingClientRect()
            f.left = Math.floor(a.left) + Math.max(b.documentElement.scrollLeft, b.body.scrollLeft)
            f.top = Math.floor(a.top) + Math.max(b.documentElement.scrollTop, b.body.scrollTop)
            f.left = f.left - b.documentElement.clientLeft
            f.top = f.top - b.documentElement.clientTop
            a = b.body
            b = parseInt(e(a, 'borderLeftWidth'))
            e = parseInt(e(a, 'borderTopWidth'))
            if (c.ma && !c.DD) {
                f.left = f.left - (isNaN(b) ? 2 : b)
                f.top = f.top - (isNaN(e) ? 2 : e)
            }
        } else {
            g = a
            do {
                f.left = f.left + g.offsetLeft
                f.top = f.top + g.offsetTop
                if (c.qL > 0 && e(g, 'position') == 'fixed') {
                    f.left = f.left + b.body.scrollLeft
                    f.top = f.top + b.body.scrollTop
                    break
                }
                g = g.offsetParent
            } while (g && g != a);if (c.opera > 0 || c.qL > 0 && e(a, 'position') == 'absolute') { f.top = f.top - b.body.offsetTop }
            for (g = a.offsetParent; g && g != b.body;) {
                f.left = f.left - g.scrollLeft
                if (!c.opera || g.tagName != 'TR') { f.top = f.top - g.scrollTop }
                g = g.offsetParent
            }
        }
        return f
    }
    ;
    /firefox\/(\d+\.\d)/i.test(navigator.userAgent) && (z.ga.Qe = +RegExp.$1);
    /BIDUBrowser/i.test(navigator.userAgent) && (z.ga.u1 = p)
    var la = navigator.userAgent;
    /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(la) && !/chrome/i.test(la) && (z.ga.Mx = +(RegExp.$1 || RegExp.$2));
    /chrome\/(\d+\.\d)/i.test(navigator.userAgent) && (z.ga.Zv = +RegExp.$1)
    z.lc = z.lc || {}
    z.lc.Nb = function (a, b) {
        var c; var e; var f = a.length
        if (typeof b === 'function') {
 for (e = 0; e < f; e++) {
                c = a[e]
                c = b.call(a, c, e)
                if (c === t) { break }
            }
}
        return a
    }

    z.Nb = z.lc.Nb
    z.lang.ea = function () {
        return 'TANGRAM__' + (window[z.ea]._counter++).toString(36)
    }

    window[z.ea]._counter = window[z.ea]._counter || 1
    window[z.ea]._instances = window[z.ea]._instances || {}
    z.lang.Gs = function (a) {
        return Object.prototype.toString.call(a) == '[object Function]'
    }

    z.lang.Ga = function (a) {
        this.ea = a || z.lang.ea()
        window[z.ea]._instances[this.ea] = this
    }

    window[z.ea]._instances = window[z.ea]._instances || {}
    z.lang.Ga.prototype.Rh = ha(0)
    z.lang.Ga.prototype.toString = function () {
        return '[object ' + (this.AP || 'Object') + ']'
    }

    z.lang.Zt = function (a, b) {
        this.type = a
        this.returnValue = p
        this.target = b || s
        this.currentTarget = s
    }

    z.lang.Ga.prototype.addEventListener = function (a, b, c) {
        if (z.lang.Gs(b)) {
            !b.Rk && (b.Rk = {})
            !this.vi && (this.vi = {})
            var e = this.vi; var f
            if (typeof c === 'string' && c) {
                /[^\w\-]/.test(c) && aa('nonstandard key:' + c)
                f = b.Tw = c
            }
            a.indexOf('on') != 0 && (a = 'on' + a)
            typeof e[a] !== 'object' && (e[a] = {})
            typeof b.Rk[a] !== 'object' && (b.Rk[a] = {})
            f = f || z.lang.ea()
            b.Rk[a].Tw = f
            e[a][f] = b
        }
    }

    z.lang.Ga.prototype.removeEventListener = function (a, b) {
        a.indexOf('on') != 0 && (a = 'on' + a)
        if (z.lang.Gs(b)) {
            if (!b.Rk || !b.Rk[a]) { return }
            b = b.Rk[a].Tw
        } else if (!z.lang.og(b)) { return }
        !this.vi && (this.vi = {})
        var c = this.vi
        c[a] && c[a][b] && delete c[a][b]
    }

    z.lang.Ga.prototype.dispatchEvent = function (a, b) {
        z.lang.og(a) && (a = new z.lang.Zt(a))
        !this.vi && (this.vi = {})
        var b = b || {}; var c
        for (c in b) { a[c] = b[c] }
        var e = this.vi
           var f = a.type
        a.target = a.target || this
        a.currentTarget = this
        f.indexOf('on') != 0 && (f = 'on' + f)
        z.lang.Gs(this[f]) && this[f].apply(this, arguments)
        if (typeof e[f] === 'object') {
 for (c in e[f]) { e[f][c].apply(this, arguments) }
}
        return a.returnValue
    }

    z.lang.wa = function (a, b, c) {
        var e; var f; var g = a.prototype
        f = new Function()
        f.prototype = b.prototype
        f = a.prototype = new f()
        for (e in g) { f[e] = g[e] }
        a.prototype.constructor = a
        a.g_ = b.prototype
        if (typeof c === 'string') { f.AP = c }
    }

    z.wa = z.lang.wa
    z.lang.Mc = function (a) {
        return window[z.ea]._instances[a] || s
    }

    z.platform = z.platform || {}
    z.platform.jL = /macintosh/i.test(navigator.userAgent)
    z.platform.x3 = /MicroMessenger/i.test(navigator.userAgent)
    z.platform.rL = /windows/i.test(navigator.userAgent)
    z.platform.ZX = /x11/i.test(navigator.userAgent)
    z.platform.jj = /android/i.test(navigator.userAgent);
    /android (\d+(\.\d)?)/i.test(navigator.userAgent) && (z.platform.mB = z.mB = RegExp.$1)
    z.platform.RX = /ipad/i.test(navigator.userAgent)
    z.platform.zD = /iphone/i.test(navigator.userAgent)
    function ma (a, b) {
        a.domEvent = b = window.event || b
        a.clientX = b.clientX || b.pageX
        a.clientY = b.clientY || b.pageY
        a.offsetX = b.offsetX || b.layerX
        a.offsetY = b.offsetY || b.layerY
        a.screenX = b.screenX
        a.screenY = b.screenY
        a.ctrlKey = b.ctrlKey || b.metaKey
        a.shiftKey = b.shiftKey
        a.altKey = b.altKey
        if (b.touches) {
            a.touches = []
            for (var c = 0; c < b.touches.length; c++) {
 a.touches.push({
                    clientX: b.touches[c].clientX,
                    clientY: b.touches[c].clientY,
                    screenX: b.touches[c].screenX,
                    screenY: b.touches[c].screenY,
                    pageX: b.touches[c].pageX,
                    pageY: b.touches[c].pageY,
                    target: b.touches[c].target,
                    identifier: b.touches[c].identifier
                })
}
        }
        if (b.changedTouches) {
            a.changedTouches = []
            for (c = 0; c < b.changedTouches.length; c++) {
 a.changedTouches.push({
                    clientX: b.changedTouches[c].clientX,
                    clientY: b.changedTouches[c].clientY,
                    screenX: b.changedTouches[c].screenX,
                    screenY: b.changedTouches[c].screenY,
                    pageX: b.changedTouches[c].pageX,
                    pageY: b.changedTouches[c].pageY,
                    target: b.changedTouches[c].target,
                    identifier: b.changedTouches[c].identifier
                })
}
        }
        if (b.targetTouches) {
            a.targetTouches = []
            for (c = 0; c < b.targetTouches.length; c++) {
 a.targetTouches.push({
                    clientX: b.targetTouches[c].clientX,
                    clientY: b.targetTouches[c].clientY,
                    screenX: b.targetTouches[c].screenX,
                    screenY: b.targetTouches[c].screenY,
                    pageX: b.targetTouches[c].pageX,
                    pageY: b.targetTouches[c].pageY,
                    target: b.targetTouches[c].target,
                    identifier: b.targetTouches[c].identifier
                })
}
        }
        a.rotation = b.rotation
        a.scale = b.scale
        return a
    }
    z.lang.rw = function (a) {
        var b = window[z.ea]
        b.GR && delete b.GR[a]
    }

    z.event = {}
    z.V = z.event.V = function (a, b, c) {
        if (!(a = z.da(a))) { return a }
        b = b.replace(/^on/, '')
        a.addEventListener ? a.addEventListener(b, c, t) : a.attachEvent && a.attachEvent('on' + b, c)
        return a
    }

    z.dd = z.event.dd = function (a, b, c) {
        if (!(a = z.da(a))) { return a }
        b = b.replace(/^on/, '')
        a.removeEventListener ? a.removeEventListener(b, c, t) : a.detachEvent && a.detachEvent('on' + b, c)
        return a
    }

    z.R.ws = function (a, b) {
        if (!a || !a.className || typeof a.className !== 'string') { return t }
        var c = -1
        try {
            c = a.className == b || a.className.search(RegExp('(\\s|^)' + b + '(\\s|$)'))
        } catch (e) {
            return t
        }
        return c > -1
    }

    z.VJ = (function () {
        function a (a) {
            document.addEventListener && (this.element = a,
            this.YJ = this.qk ? 'touchstart' : 'mousedown',
            this.xC = this.qk ? 'touchmove' : 'mousemove',
            this.wC = this.qk ? 'touchend' : 'mouseup',
            this.fh = t,
            this.Et = this.Dt = 0,
            this.element.addEventListener(this.YJ, this, t),
            ja.V(this.element, 'mousedown', u()),
            this.handleEvent(s))
        }
        a.prototype = {
            qk: 'ontouchstart' in window || 'createTouch' in document,
            start: function (a) {
                na(a)
                this.fh = t
                this.Dt = this.qk ? a.touches[0].clientX : a.clientX
                this.Et = this.qk ? a.touches[0].clientY : a.clientY
                this.element.addEventListener(this.xC, this, t)
                this.element.addEventListener(this.wC, this, t)
            },
            move: function (a) {
                oa(a)
                var c = this.qk ? a.touches[0].clientY : a.clientY
                if (Math.abs((this.qk ? a.touches[0].clientX : a.clientX) - this.Dt) > 10 || Math.abs(c - this.Et) > 10) { this.fh = p }
            },
            end: function (a) {
                oa(a)
                this.fh || (a = document.createEvent('Event'),
                a.initEvent('tap', t, p),
                this.element.dispatchEvent(a))
                this.element.removeEventListener(this.xC, this, t)
                this.element.removeEventListener(this.wC, this, t)
            },
            handleEvent: function (a) {
                if (a) {
 switch (a.type) {
                    case this.YJ:
                        this.start(a)
                        break
                    case this.xC:
                        this.move(a)
                        break
                    case this.wC:
                        this.end(a)
                    }
}
            }
        }
        return function (b) {
            return new a(b)
        }
    }())
    var D = window.BMap || {}
    D.version = '3.0'
    D.l1 = Math.random() < 0.34
    D.version.indexOf('#') >= 0 && (D.version = '3.0')
    D.Wq = []
    D.We = function (a) {
        this.Wq.push(a)
    }

    D.Mq = []
    D.tm = function (a) {
        this.Mq.push(a)
    }

    D.UT = D.apiLoad || u()
    D.S_ = D.verify || function () {
        D.version && D.version >= 1.5 && pa('./js/diyStyleJs/dverify.js')
        /* D.version && D.version >= 1.5 && pa(D.Cd + "?qt=verify&ak=" + qa, function(a) {
            if (a && a.error !== 0) {
                if (typeof map !== "undefined") {
                    map.Ua().innerHTML = "";
                    map.vi = {}
                }
                D = s;
                var b = "\u767e\u5ea6\u672a\u6388\u6743\u4f7f\u7528\u5730\u56feAPI\uff0c\u53ef\u80fd\u662f\u56e0\u4e3a\u60a8\u63d0\u4f9b\u7684\u5bc6\u94a5\u4e0d\u662f\u6709\u6548\u7684\u767e\u5ea6LBS\u5f00\u653e\u5e73\u53f0\u5bc6\u94a5\uff0c\u6216\u6b64\u5bc6\u94a5\u672a\u5bf9\u672c\u5e94\u7528\u7684\u767e\u5ea6\u5730\u56feJavaScriptAPI\u6388\u6743\u3002\u60a8\u53ef\u4ee5\u8bbf\u95ee\u5982\u4e0b\u7f51\u5740\u4e86\u89e3\u5982\u4f55\u83b7\u53d6\u6709\u6548\u7684\u5bc6\u94a5\uff1ahttp://lbsyun.baidu.com/apiconsole/key#\u3002";
                switch (a.error) {
                case 101:
                    b = "\u5f00\u53d1\u8005\u7981\u7528\u4e86\u8be5ak\u7684jsapi\u670d\u52a1\u6743\u9650\u3002\u60a8\u53ef\u4ee5\u8bbf\u95ee\u5982\u4e0b\u7f51\u5740\u4e86\u89e3\u5982\u4f55\u83b7\u53d6\u6709\u6548\u7684\u5bc6\u94a5\uff1ahttp://lbsyun.baidu.com/apiconsole/key#\u3002";
                    break;
                case 102:
                    b = "\u5f00\u53d1\u8005Referer\u4e0d\u6b63\u786e\u3002\u60a8\u53ef\u4ee5\u8bbf\u95ee\u5982\u4e0b\u7f51\u5740\u4e86\u89e3\u5982\u4f55\u83b7\u53d6\u6709\u6548\u7684\u5bc6\u94a5\uff1ahttp://lbsyun.baidu.com/apiconsole/key#\u3002"
                }
                alert(b)
            }
        }) */
    }

    var qa = window.BMAP_AUTHENTIC_KEY
    window.BMAP_AUTHENTIC_KEY = s
    var sa = window.BMap_loadScriptTime
       var ta = (new Date()).getTime()
       var ua = s
       var wa = p
       var xa = 5042
       var za = 5002
       var Aa = 5003
       var Ba = 'load_mapclick'
       var Ca = 5038
       var Da = 5041
       var Fa = 5047
       var Ga = 5036
       var Ha = 5039
       var Ia = 5037
       var Ja = 5040
       var Ka = 5011
       var Ma = 7E3
    var Na = 0
    function Oa (a, b) {
        if (a = z.da(a)) {
            var c = this
            z.lang.Ga.call(c)
            b = b || {}
            c.U = {
                zB: 200,
                Wb: p,
                ww: t,
                mC: p,
                to: p,
                vo: b.enableWheelZoom || t,
                TJ: p,
                pC: p,
                Yr: p,
                Xr: p,
                tC: p,
                ro: b.enable3DBuilding || t,
                Hc: 25,
                e0: 240,
                HT: 450,
                yc: H.yc,
                Gd: H.Gd,
                Hs: !!b.Hs,
                gc: Math.round(b.minZoom) || 1,
                pc: Math.round(b.maxZoom) || 19,
                Db: b.mapType || Pa,
                x4: t,
                QJ: b.drawer || Na,
                vw: p,
                uw: 500,
                LV: b.enableHighResolution !== t,
                oC: b.enableMapClick !== t,
                devicePixelRatio: b.devicePixelRatio || window.devicePixelRatio || 1,
                bF: 99,
                we: b.mapStyle || s,
                gY: b.logoControl === t ? t : p,
                aU: [],
                x1: b.beforeClickIcon || s,
                Xi: t,
                uo: t,
                mo: t,
                aM: p
            }
            c.U.we && (this.CX(c.U.we.controls),
            this.eL(c.U.we.geotableId))
            c.U.we && c.U.we.styleId && c.U2(c.U.we.styleId)
            c.U.CB = {
                dark: {
                    backColor: '#2D2D2D',
                    textColor: '#bfbfbf',
                    iconUrl: 'dicons'
                },
                normal: {
                    backColor: '#F3F1EC',
                    textColor: '#c61b1b',
                    iconUrl: 'icons'
                },
                light: {
                    backColor: '#EBF8FC',
                    textColor: '#017fb4',
                    iconUrl: 'licons'
                }
            }
            b.enableAutoResize && (c.U.Xr = b.enableAutoResize)
            b.enableStreetEntrance === t && (c.U.tC = b.enableStreetEntrance)
            b.enableDeepZoom === t && (c.U.TJ = b.enableDeepZoom)
            var e = c.U.aU
            if (I()) {
 for (var f = 0, g = e.length; f < g; f++) {
 if (z.ga[e[f]]) {
                        c.U.devicePixelRatio = 1
                        break
                    }
}
}
            e = navigator.userAgent.toLowerCase().indexOf('android') > -1
            f = navigator.userAgent.toLowerCase().indexOf('mqqbrowser') > -1
            if (navigator.userAgent.toLowerCase().indexOf('UCBrowser') > -1 || e && f) { c.U.bF = 99 }
            c.Ya = a
            c.MA(a)
            a.unselectable = 'on'
            a.innerHTML = ''
            a.appendChild(c.za())
            b.size && this.Ae(b.size)
            e = c.Hb()
            c.width = e.width
            c.height = e.height
            c.offsetX = 0
            c.offsetY = 0
            c.platform = a.firstChild
            c.xe = c.platform.firstChild
            c.xe.style.width = c.width + 'px'
            c.xe.style.height = c.height + 'px'
            c.Wd = {}
            c.pe = new J(0, 0)
            c.fc = new J(0, 0)
            c.Va = 3
            c.Bc = 0
            c.NB = s
            c.MB = s
            c.Vb = ''
            c.$v = ''
            c.Ah = {}
            c.Ah.custom = {}
            c.xi = {}
            c.Wa = 0
            b.useWebGL === t && Qa(t)
            c.W = new Ra(a, {
                hf: 'api',
                LR: p
            })
            c.W.aa()
            c.W.xE(c)
            b = b || {}
            e = c.Db = c.U.Db
            c.Pc = e.nk()
            e === Sa && Ta(za)
            e === Va && Ta(Aa)
            e = c.U
            e.VN = Math.round(b.minZoom)
            e.UN = Math.round(b.maxZoom)
            c.ru()
            c.$ = {
                Ic: t,
                mc: 0,
                Ms: 0,
                xL: 0,
                B3: 0,
                rB: t,
                gE: -1,
                re: []
            }
            c.platform.style.cursor = c.U.yc
            for (f = 0; f < D.Wq.length; f++) { D.Wq[f](c) }
            c.$.gE = f
            c.fa()
            K.load('map', function () {
                c.jb()
            })
            c.U.oC && (setTimeout(function () {
                Ta(Ba)
            }, 1E3),
            K.load('mapclick', function () {
                window.MPC_Mgr = window.MPC_Mgr || {}
                window.MPC_Mgr[c.ea] = new Wa(c)
            }, p))
            Xa() && K.load('oppc', function () {
                c.hu()
            })
            I() && K.load('opmb', function () {
                c.hu()
            })
            a = s
            c.$A = []
        }
    }
    z.lang.wa(Oa, z.lang.Ga, 'Map')
    z.extend(Oa.prototype, {
        za: function () {
            var a = O('div')
               var b = a.style
            b.overflow = 'visible'
            b.position = 'absolute'
            b.zIndex = '0'
            b.top = b.left = '0px'
            var b = O('div', {
                'class': 'BMap_mask'
            })
               var c = b.style
            c.position = 'absolute'
            c.top = c.left = '0px'
            c.zIndex = '9'
            c.overflow = 'hidden'
            c.WebkitUserSelect = 'none'
            a.appendChild(b)
            return a
        },
        MA: function (a) {
            var b = a.style
            b.overflow = 'hidden'
            Ya(a).position !== 'absolute' && (b.position = 'relative',
            b.zIndex = 0)
            b.backgroundColor = '#F3F1EC'
            b.color = '#000'
            b.textAlign = 'left'
        },
        fa: function () {
            var a = this
            a.Sn = function () {
                var b = a.Hb()
                if (a.width !== b.width || a.height !== b.height) {
                    var c = new P(a.width, a.height)
                       var e = new Q('onbeforeresize')
                    e.size = c
                    a.dispatchEvent(e)
                    a.Wj((b.width - a.width) / 2, (b.height - a.height) / 2)
                    a.xe.style.width = (a.width = b.width) + 'px'
                    a.xe.style.height = (a.height = b.height) + 'px'
                    c = new Q('onresize')
                    c.size = b
                    a.dispatchEvent(c)
                }
            }

            a.U.Xr && (a.$.Jl = setInterval(a.Sn, 80))
        },
        Wj: function (a, b, c, e) {
            var f = this.va().dc(this.ka())
               var g = this.Pc
               var i = p
            c && J.iL(c) && (this.pe = new J(c.lng, c.lat),
            i = t)
            if (c = c && e ? g.bi(c, this.Vb) : this.fc) {
 if (this.fc = new J(c.lng + a * f, c.lat - b * f),
                (a = g.eh(this.fc, this.Vb)) && i) { this.pe = a }
}
        },
        yg: function (a, b) {
            if (Za(a) && (this.ru(),
            this.dispatchEvent(new Q('onzoomstart')),
            a = this.tn(a).zoom,
            a !== this.Va)) {
                this.Bc = this.Va
                this.Va = a
                var c
                b ? c = b : this.$g() && (c = this.$g().ja())
                c && (c = this.Rb(c, this.Bc),
                this.Wj(this.width / 2 - c.x, this.height / 2 - c.y, this.Ib(c, this.Bc), p))
                this.dispatchEvent(new Q('onzoomstartcode'))
            }
        },
        Qc: function (a) {
            this.yg(a)
        },
        hF: function (a) {
            this.yg(this.Va + 1, a)
        },
        iF: function (a) {
            this.yg(this.Va - 1, a)
        },
        ji: function (a) {
            a instanceof J && (this.fc = this.Pc.bi(a, this.Vb),
            this.pe = J.iL(a) ? new J(a.lng, a.lat) : this.Pc.eh(this.fc, this.Vb))
        },
        tg: function (a, b) {
            a = Math.round(a) || 0
            b = Math.round(b) || 0
            this.Wj(-a, -b)
        },
        Mv: function (a) {
            a && $a(a.Fe) && (a.Fe(this),
            this.dispatchEvent(new Q('onaddcontrol', a)))
        },
        KM: function (a) {
            a && $a(a.remove) && (a.remove(),
            this.dispatchEvent(new Q('onremovecontrol', a)))
        },
        Wn: function (a) {
            a && $a(a.xa) && (a.xa(this),
            this.dispatchEvent(new Q('onaddcontextmenu', a)))
        },
        ap: function (a) {
            a && $a(a.remove) && (this.dispatchEvent(new Q('onremovecontextmenu', a)),
            a.remove())
        },
        Pa: function (a) {
            a && $a(a.Fe) && (a.Fe(this),
            this.dispatchEvent(new Q('onaddoverlay', a)))
        },
        Sb: function (a) {
            a && $a(a.remove) && (a.remove(),
            this.dispatchEvent(new Q('onremoveoverlay', a)))
        },
        lJ: function () {
            this.dispatchEvent(new Q('onclearoverlays'))
        },
        Me: function (a) {
            a && this.dispatchEvent(new Q('onaddtilelayer', a))
        },
        Tf: function (a) {
            a && this.dispatchEvent(new Q('onremovetilelayer', a))
        },
        wg: function (a) {
            if (this.Db !== a) {
                var b = new Q('onsetmaptype')
                b.o4 = this.Db
                this.Db = this.U.Db = a
                this.Pc = this.Db.nk()
                this.Wj(0, 0, this.Bb(), p)
                this.ru()
                var c = this.tn(this.ka()).zoom
                this.yg(c)
                this.dispatchEvent(b)
                b = new Q('onmaptypechange')
                b.Va = c
                b.Db = a
                this.dispatchEvent(b);
                (a === ab || a === Va) && Ta(Aa)
            }
        },
        pf: function (a) {
            var b = this
            if (a instanceof J) {
 b.ji(a, {
                    noAnimation: p
                })
} else if (bb(a)) {
 if (b.Db === Sa) {
                    var c = H.vB[a]
                    c && (pt = c.o,
                    b.pf(pt))
                } else {
                    var e = this.QG()
                    e.ot(function (c) {
                        e.am() === 0 && e.Ma.result.type === 2 && (b.pf(c.mk(0).point),
                        Sa.ik(a) && b.uE(a))
                    })
                    e.search(a, {
                        log: 'center'
                    })
                }
}
        },
        Ed: function (a, b) {
            Object.prototype.toString.call(b) !== '[object Undefined]' && (b = parseInt(b))
            D.Qp('cus.fire', 'time', {
                z_loadscripttime: ta - sa
            })
            var c = this
            if (bb(a)) {
 if (c.Db === Sa) {
                    var e = H.vB[a]
                    e && (pt = e.o,
                    c.Ed(pt, b))
                } else {
                    var f = c.QG()
                    f.ot(function (e) {
                        if (f.am() === 0 && (f.Ma.result.type === 2 || f.Ma.result.type === 11)) {
                            var e = e.mk(0).point
                               var g = b || db.Aw(f.Ma.content.level, c)
                            c.Ed(e, g)
                            Sa.ik(a) && c.uE(a)
                        }
                    })
                    f.search(a, {
                        log: 'center'
                    })
                }
} else if (a instanceof J && b) {
                b = c.tn(b).zoom
                c.Bc = c.Va || b
                c.Va = b
                e = c.pe
                c.pe = new J(a.lng, a.lat)
                c.fc = c.Pc.bi(c.pe, c.Vb)
                c.NB = c.NB || c.Va
                c.MB = c.MB || c.pe
                var g = new Q('onload')
                   var i = new Q('onloadcode')
                g.point = new J(a.lng, a.lat)
                g.pixel = c.Rb(c.pe, c.Va)
                g.zoom = b
                c.loaded || (c.loaded = p,
                c.dispatchEvent(g),
                ua || (ua = eb()))
                c.dispatchEvent(i)
                g = new Q('onmoveend')
                g.hz = 'centerAndZoom'
                e.oc(c.pe) || c.dispatchEvent(g)
                c.dispatchEvent(new Q('onmoveend'))
                c.Bc !== c.Va && (e = new Q('onzoomend'),
                e.hz = 'centerAndZoom',
                c.dispatchEvent(e))
                c.U.ro && c.ro()
            }
        },
        QG: function () {
            this.$.JL || (this.$.JL = new fb(1))
            return this.$.JL
        },
        reset: function () {
            this.Ed(this.MB, this.NB, p)
        },
        enableDragging: function () {
            this.U.Wb = p
        },
        disableDragging: function () {
            this.U.Wb = t
        },
        enableInertialDragging: function () {
            this.U.vw = p
        },
        disableInertialDragging: function () {
            this.U.vw = t
        },
        enableScrollWheelZoom: function () {
            this.U.vo = p
        },
        disableScrollWheelZoom: function () {
            this.U.vo = t
        },
        enableContinuousZoom: function () {
            this.U.to = p
        },
        disableContinuousZoom: function () {
            this.U.to = t
        },
        enableDoubleClickZoom: function () {
            this.U.mC = p
        },
        disableDoubleClickZoom: function () {
            this.U.mC = t
        },
        enableKeyboard: function () {
            this.U.ww = p
        },
        disableKeyboard: function () {
            this.U.ww = t
        },
        enablePinchToZoom: function () {
            this.U.Yr = p
        },
        disablePinchToZoom: function () {
            this.U.Yr = t
        },
        enableAutoResize: function () {
            this.U.Xr = p
            this.Sn()
            this.$.Jl || (this.$.Jl = setInterval(this.Sn, 80))
        },
        disableAutoResize: function () {
            this.U.Xr = t
            this.$.Jl && (clearInterval(this.$.Jl),
            this.$.Jl = s)
        },
        ro: function () {
            this.U.ro = p
            this.bn || (this.bn = new BuildingLayer({
                e2: p
            }),
            this.Me(this.bn))
        },
        lV: function () {
            this.U.ro = t
            this.bn && (this.Tf(this.bn),
            this.bn = s,
            delete this.bn)
        },
        Hb: function () {
            return this.Kr && this.Kr instanceof P ? new P(this.Kr.width, this.Kr.height) : new P(this.Ya.clientWidth, this.Ya.clientHeight)
        },
        Ae: function (a) {
            a && a instanceof P ? (this.Kr = a,
            this.Ya.style.width = a.width + 'px',
            this.Ya.style.height = a.height + 'px') : this.Kr = s
        },
        Bb: x('pe'),
        ka: x('Va'),
        zU: function () {
            this.Sn()
        },
        tn: function (a) {
            var b = this.U.gc
               var c = this.U.pc
               var e = t
               var a = Math.round(a)
            a < b && (e = p,
            a = b)
            a > c && (e = p,
            a = c)
            return {
                zoom: a,
                yC: e
            }
        },
        Ua: x('Ya'),
        Rb: function (a, b) {
            b = b || this.ka()
            return this.Pc.Rb(a, b, this.fc, this.Hb(), this.Vb)
        },
        Ib: function (a, b) {
            b = b || this.ka()
            return this.Pc.Ib(a, b, this.fc, this.Hb(), this.Vb)
        },
        Ve: function (a, b) {
            if (a) {
                var c = this.Rb(new J(a.lng, a.lat), b)
                c.x -= this.offsetX
                c.y -= this.offsetY
                return c
            }
        },
        tM: function (a, b) {
            if (a) {
                var c = new R(a.x, a.y)
                c.x += this.offsetX
                c.y += this.offsetY
                return this.Ib(c, b)
            }
        },
        pointToPixelFor3D: function (a, b) {
            var c = map.Vb
            this.Db === Sa && c && gb.rJ(a, this, b)
        },
        f4: function (a, b) {
            var c = map.Vb
            this.Db === Sa && c && gb.qJ(a, this, b)
        },
        g4: function (a, b) {
            var c = this
               var e = map.Vb
            c.Db === Sa && e && gb.rJ(a, c, function (a) {
                a.x -= c.offsetX
                a.y -= c.offsetY
                b && b(a)
            })
        },
        d4: function (a, b) {
            var c = map.Vb
            this.Db === Sa && c && (a.x += this.offsetX,
            a.y += this.offsetY,
            gb.qJ(a, this, b))
        },
        te: function (a) {
            if (!this.fx()) { return new hb() }
            var b = a || {}
               var a = b.margins || [0, 0, 0, 0]
               var c = b.zoom || s
               var b = this.Ib({
                x: a[3],
                y: this.height - a[2]
            }, c)
               var a = this.Ib({
                x: this.width - a[1],
                y: a[0]
            }, c)
            return new hb(b, a)
        },
        fx: function () {
            return !!this.loaded
        },
        PQ: function (a, b) {
            for (var c = this.va(), e = b.margins || [10, 10, 10, 10], f = b.zoomFactor || 0, g = e[1] + e[3], e = e[0] + e[2], i = c.aj(), k = c = c.Xh(); k >= i; k--) {
                var m = this.va().dc(k)
                if (a.TE().lng / m < this.width - g && a.TE().lat / m < this.height - e) { break }
            }
            k += f
            k < i && (k = i)
            k > c && (k = c)
            return k
        },
        vs: function (a, b) {
            var c = {
                center: this.Bb(),
                zoom: this.ka()
            }
            if (!a || !(a instanceof hb) && a.length === 0 || a instanceof hb && a.lj()) { return c }
            var e = []
            a instanceof hb ? (e.push(a.Lf()),
            e.push(a.Se())) : e = a.slice(0)
            for (var b = b || {}, f = [], g = 0, i = e.length; g < i; g++) { f.push(this.Pc.bi(e[g], this.Vb)) }
            e = new hb()
            for (g = f.length - 1; g >= 0; g--) { e.extend(f[g]) }
            if (e.lj()) { return c }
            c = e.Bb()
            f = this.PQ(e, b)
            b.margins && (e = b.margins,
            g = (e[1] - e[3]) / 2,
            e = (e[0] - e[2]) / 2,
            i = this.va().dc(f),
            b.offset && (g = b.offset.width,
            e = b.offset.height),
            c.lng += i * g,
            c.lat += i * e)
            c = this.Pc.eh(c, this.Vb)
            return {
                center: c,
                zoom: f
            }
        },
        mh: function (a, b) {
            var c
            c = a && a.center ? a : this.vs(a, b)
            var b = b || {}
               var e = b.delay || 200
            if (c.zoom === this.Va && b.enableAnimation !== t) {
                var f = this
                setTimeout(function () {
                    f.ji(c.center, {
                        duration: 210
                    })
                }, e)
            } else { this.Ed(c.center, c.zoom) }
        },
        Mf: x('Wd'),
        $g: function () {
            return this.$.rb && this.$.rb.Za() ? this.$.rb : s
        },
        getDistance: function (a, b) {
            if (a && b) {
                if (a.oc(b)) { return 0 }
                var c = 0
                   var c = S.Co(a, b)
                if (c === s || c === l) { c = 0 }
                return c
            }
        },
        Mw: function () {
            var a = []
               var b = this.Ba
               var c = this.Ce
            if (b) {
 for (var e in b) { b[e] instanceof ib && a.push(b[e]) }
}
            if (c) {
                e = 0
                for (b = c.length; e < b; e++) { a.push(c[e]) }
            }
            return a
        },
        va: x('Db'),
        cX: x('Bd'),
        hu: function () {
            for (var a = this.$.gE; a < D.Wq.length; a++) { D.Wq[a](this) }
            this.$.gE = a
        },
        uE: function (a) {
            this.Vb = Sa.ik(a)
            this.$v = Sa.mK(this.Vb)
            this.Db === Sa && this.Pc instanceof jb && (this.Pc.Ti = this.Vb)
        },
        setDefaultCursor: function (a) {
            this.U.yc = a
            this.platform && (this.platform.style.cursor = this.U.yc)
        },
        getDefaultCursor: function () {
            return this.U.yc
        },
        setDraggingCursor: function (a) {
            this.U.Gd = a
        },
        getDraggingCursor: function () {
            return this.U.Gd
        },
        Yw: function () {
            return this.U.LV && this.U.devicePixelRatio >= 1.5
        },
        eB: function (a, b) {
            b ? this.Ah[b] || (this.Ah[b] = {}) : b = 'custom'
            a.tag = b
            a instanceof kb && (this.Ah[b][a.ea] = a,
            a.xa(this))
            var c = this
            K.load('hotspot', function () {
                c.hu()
            }, p)
        },
        bZ: function (a, b) {
            b || (b = 'custom')
            this.Ah[b][a.ea] && delete this.Ah[b][a.ea]
        },
        bw: function (a) {
            a || (a = 'custom')
            this.Ah[a] = {}
        },
        ru: function () {
            var a = this.Db.aj()
               var b = this.Db.Xh()
               var c = this.U
            c.gc = c.VN || a
            c.pc = c.UN || b
            c.gc < a && (c.gc = a)
            c.pc > b && (c.pc = b)
        },
        setMinZoom: function (a) {
            a = Math.round(a)
            a > this.U.pc && (a = this.U.pc)
            this.U.VN = a
            this.wI()
        },
        setMaxZoom: function (a) {
            a = Math.round(a)
            a < this.U.gc && (a = this.U.gc)
            this.U.UN = a
            this.wI()
        },
        wI: function () {
            this.ru()
            var a = this.U
            this.Va < a.gc ? this.Qc(a.gc) : this.Va > a.pc && this.Qc(a.pc)
            var b = new Q('onzoomspanchange')
            b.gc = a.gc
            b.pc = a.pc
            this.dispatchEvent(b)
        },
        W2: x('$A'),
        getKey: function () {
            return qa
        },
        GZ: function (a) {
            function b (a) {
                c.c_ = a
                var b = D.Cd + 'custom/v2/mapstyle?ak=' + qa + '&callback=cb&'
                   var b = b + 'is_all=true&is_new=1&' + ('styles=' + encodeURIComponent(c.LE(a, e)))
                //   console.log('GZ.b >>> ', b)
                // pa(b)
                pa('./js/diyStyleJs/mapstyleFormat.js')
            }
            var c = this
            D.Qp('cus.fire', 'count', 'z_setmapstylev2count')
            this.gN(t)
            this.addEventListener('hidecopyright', function () {
                c.bk.aa()
                c.U.mo = !!a.customEditor
                c.U.mo === t && c.tE(new P(1, 1))
            })
            c.bk && c.bk.aa()
            this.U.mo = !!a.customEditor
            this.U.M4 = !!a.sharing
            this.U.s4 = !!a.preview
            this.U.mo === t && this.tE(new P(1, 1))
            K.load('hotspot', function () {
                c.hu()
            }, p)
            window.qh = {}
            window.w5 = []
            window.Tt = []
            window.La = {}
            var e = this.ka()
               var f = {}
            z.extend(f, a)
            window.cb = function (a) {
                if (a.status === 0) {
                    a.data.style.length === 3 ? (window.bmap_baseFs || (window.bmap_baseFs = a.data.style),
                    window.Kp = a.data.style[2]) : window.Kp = a.data.style
                    a = window.bmap_baseFs
                    if (z.km(window.qh)) {
 window.j0 = a,
                        c.ZE(e)
} else {
                        c.RN(window.Kp, e)
                        c.ZE(e)
                        var a = c.sU(window.qh, e); var b
                        for (b in a) {
                            var g = {}
                            z.extend(g, f)
                            c.MW(b, g)
                        }
                    }
                    c.JX()
                }
            }

            if (a.styleId) {
                var g = 'jsapi'
                a.sharing ? g = 'sharing' : a.preview && (g = 'preview')
                this.zW(a.styleId, g, b)
            } else { b(a.styleJson) }
            window.iconSetInfo_high || pa('./js/diyStyleJs/icons_na2x.js')
            // window.iconSetInfo_high || pa(D.url.proto + D.url.domain.TILE_ONLINE_URLS[0] + "/sty/icons_na2x.js?udt=20190108&v=001&from=jsapi")
        },
        zW: function (a, b, c) {
            var e = this
               var f = (1E5 * Math.random()).toFixed(0)
            window['_cbk_si_phpui' + f] = function (a) {
                var b = []
                a.result && (a.result.error === 0 && a.content && a.content.status === 0) && (b = e.Ax(a.content.data.json))
                c && c(b)
            }

            window['_cbk_si_api' + f] = function (a) {
                var b = []
                a.status === 0 && (b = a.info ? e.Ax(a.info.json) : e.Ax(a.data.json))
                c && c(b)
            }

            var g = '/apiconsole/custommap/'
            switch (b) {
            case 'jsapi':
                g = D.Cd + '?qt=custom_map&v=3.0'
                g += '&style_id=' + a + '&type=publish&ak=' + qa
                g += '&callback=_cbk_si_phpui' + f
                break
            case 'sharing':
                g = g + 'getSharingJson' + ('?styleid=' + a + '&type=edit') + ('&ck=_cbk_si_api' + f)
                break
            case 'preview':
                g = g + 'getJson' + ('?styleid=' + a + '&type=edit') + ('&ck=_cbk_si_api' + f)
            }
            console.log('g >>> ', g)
            pa(g)
        },
        fV: function () {
            Array.prototype.map || (Array.prototype.map = function (a, b) {
                var c, e, f
                this == s && aa(new TypeError(' this is null or not defined'))
                var g = Object(this)
                   var i = g.length >>> 0
                Object.prototype.toString.call(a) != '[object Function]' && aa(new TypeError(a + ' is not a function'))
                b && (c = b)
                e = Array(i)
                for (f = 0; f < i;) {
                    var k
                    f in g && (k = g[f],
                    k = a.call(c, k, f, g),
                    e[f] = k)
                    f++
                }
                return e
            }
            )
        },
        Ax: function (a) {
            if (a === s || a === '') { return [] }
            this.fV()
            var b = {
                t: 'featureType',
                e: 'elementType',
                v: 'visibility',
                c: 'color',
                l: 'lightness',
                s: 'saturation',
                w: 'weight',
                z: 'level',
                h: 'hue',
                f: 'fontsize',
                zri: 'curZoomRegionId',
                zr: 'curZoomRegion'
            }
               var c = {
                all: 'all',
                g: 'geometry',
                'g.f': 'geometry.fill',
                'g.s': 'geometry.stroke',
                l: 'labels',
                'l.t.f': 'labels.text.fill',
                'l.t.s': 'labels.text.stroke',
                'l.t': 'labels.text',
                'l.i': 'labels.icon'
            }
            return a.split(',').map(function (a) {
                var a = a.split('|').map(function (a) {
                    var e = b[a.split(':')[0]]
                       var a = c[a.split(':')[1]] ? c[a.split(':')[1]] : a.split(':')[1]
                    switch (a) {
                    case 'poi':
                        a = 'poilabel'
                        break
                    case 'districtlabel':
                        a = 'districtlabel'
                    }
                    var f = {}
                    f[e] = a
                    return f
                })
                   var f = a[0]
                   var g = 1
                a[1].elementType && (g = 2,
                z.extend(f, a[1]))
                for (var i = {}; g < a.length; g++) { z.extend(i, a[g]) }
                return z.extend(f, {
                    stylers: i
                })
            })
        },
        hX: function () {
            return this.oh.Hg
        },
        MW: function (a, b) {
            var c = this
              var e = (1E5 * Math.random()).toFixed(0)
            // e = '1210';
            window['_cbk' + e] = function (b) {
                b = b.data.style.length === 3 ? b.data.style[2] : b.data.style
                c.RN(b, a)
                c.ZE(a)
                b = new Q('onzoomfeatureload' + a)
                c.dispatchEvent(b)
                delete window['_cbk' + e]
            }

            var f = D.Cd + 'custom/v2/mapstyle?ak=' + qa + '&callback=_cbk' + e + '&'
               var f = f + 'is_all=true&is_new=1&'
            b.styleJson ? f += 'styles=' + encodeURIComponent(this.LE(b.styleJson, parseInt(a, 10))) : b.styleId && (f += 'styles=' + encodeURIComponent(c.LE(c.c_, parseInt(a, 10))))
            // console.log('==> f ===>', f)
            pa(f)
            // pa('./js/diyStyleJs/mapstyleV2.js')
        },
        tE: function (a, b) {
            var c = new Q('oncopyrightoffsetchange', {
                fY: a,
                UU: b
            })
            this.U.vJ = b
            this.dispatchEvent(c)
        },
        kt: function (a) {
            var b = this
            window.MPC_Mgr && window.MPC_Mgr[b.ea] && window.MPC_Mgr[b.ea].close()
            b.U.oC = t
            D.Qp('cus.fire', 'count', 'z_setmapstylecount')
            if (a) {
                b = this
                a.styleJson && (a.styleStr = b.d_(a.styleJson))
                I() && z.ga.Mx ? setTimeout(function () {
                    b.U.we = a
                    b.dispatchEvent(new Q('onsetcustomstyles', a))
                }, 50) : (this.U.we = a,
                this.dispatchEvent(new Q('onsetcustomstyles', a)),
                this.eL(b.U.we.geotableId))
                var c = {
                    style: a.style
                }
                a.features && a.features.length > 0 && (c.features = p)
                a.styleJson && a.styleJson.length > 0 && (c.styleJson = p)
                Ta(5050, c)
                a.style && (c = b.U.CB[a.style] ? b.U.CB[a.style].backColor : b.U.CB.normal.backColor) && (this.Ua().style.backgroundColor = c)
            }
        },
        CX: function (a) {
            this.controls || (this.controls = {
                navigationControl: new lb(),
                scaleControl: new mb(),
                overviewMapControl: new nb(),
                mapTypeControl: new ob()
            })
            var b = this; var c
            for (c in this.controls) { b.KM(b.controls[c]) }
            a = a || []
            z.lc.Nb(a, function (a) {
                b.Mv(b.controls[a])
            })
        },
        eL: function (a) {
            a ? this.Ir && this.Ir.xf === a || (this.Tf(this.Ir),
            this.Ir = new pb({
                geotableId: a
            }),
            this.Me(this.Ir)) : this.Tf(this.Ir)
        },
        Nd: function () {
            var a = this.ka() >= this.U.bF && this.va() === Pa && this.ka() <= 18
               var b = t
            try {
                document.createElement('canvas').getContext('2d'),
                b = p
            } catch (c) {
                b = t
            }
            return a && b
        },
        getCurrentCity: function () {
            return {
                name: this.Tg,
                code: this.vr
            }
        },
        os: function () {
            this.W.zn()
            return this.W
        },
        GX: function (a) {
            Pa.setMaxZoom(a.maxZoom || 19)
            var b = new Q('oninitindoorlayer')
            b.Te = a
            this.dispatchEvent(b)
            this.U.Xi = t
        },
        JX: function (a) {
            if (this.U.Xi) {
                var b = new Q('onupdatestyles')
                this.dispatchEvent(b)
            } else {
 b = new Q('oninitindoorlayer'),
                b.Te = a,
                this.dispatchEvent(b),
                this.U.Xi = p,
                this.U.uo = p
}
        },
        gN: function (a) {
            this.U.aM = a
            this.oh.hc.parentElement.style.display = a ? 'block' : 'none'
        },
        setPanorama: function (a) {
            this.W = a
            this.W.xE(this)
        },
        LE: function (a, b) {
            var c = {
                featureType: 't',
                elementType: 'e',
                visibility: 'v',
                color: 'c',
                lightness: 'l',
                saturation: 's',
                weight: 'w',
                level: 'z',
                hue: 'h',
                fontsize: 'f'
            }
               var e = {
                all: 'all',
                geometry: 'g',
                'geometry.fill': 'g.f',
                'geometry.stroke': 'g.s',
                labels: 'l',
                'labels.text.fill': 'l.t.f',
                'labels.text.stroke': 'l.t.s',
                'labels.text': 'l.t',
                'labels.icon': 'l.i'
            }
               var f = []
            window.La[b] = {}
            for (var g = 0, i; i = a[g]; g++) {
 if (!this.SX(i) && (window.qh = this.lX(i, window.qh),
                this.TX(i, b))) {
                    if ((i.featureType === 'land' || i.featureType === 'all' || i.featureType === 'background') && typeof i.elementType === 'string' && (i.elementType === 'geometry' || i.elementType === 'geometry.fill' || i.elementType === 'all') && i.stylers) {
 if (i.stylers.color && (window.La[b].bmapLandColor = i.stylers.color,
                        window.La[b].wL = p,
                        window.bmapLandColor = i.stylers.color),
                        i.stylers.visibility && i.stylers.visibility === 'off') {
 window.La[b].bmapLandColor = '#00000000',
                            window.La[b].wL = p,
                            window.bmapLandColor = '#00000000'
}
}
                    if (i.featureType === 'railway' && typeof i.elementType === 'string' && i.stylers) {
                        if (i.stylers.color && (i.elementType === 'geometry' && (window.bmapRailwayFillColor = i.stylers.color,
                        window.bmapRailwayStrokeColor = i.stylers.color,
                        window.La[b].bmapRailwayFillColor = i.stylers.color,
                        window.La[b].bmapRailwayStrokeColor = i.stylers.color,
                        window.La[b].GM = p,
                        window.La[b].HM = p),
                        i.elementType === 'geometry.fill' && (window.bmapRailwayFillColor = i.stylers.color,
                        window.La[b].bmapRailwayFillColor = i.stylers.color,
                        window.La[b].GM = p),
                        i.elementType === 'geometry.stroke')) {
 window.bmapRailwayStrokeColor = i.stylers.color,
                            window.La[b].bmapRailwayStrokeColor = i.stylers.color,
                            window.La[b].HM = p
}
                        i.stylers.visibility && (window.bmapRailwayVisibility = i.stylers.visibility,
                        window.La[b].bmapRailwayVisibility = i.stylers.visibility,
                        window.La[b].ZY = p)
                    }
                    i.featureType === 'roadarrow' && (i.elementType === 'labels.icon' && i.stylers) && (window.bmapRoadarrowVisibility = i.stylers.visibility,
                    window.La[b].bmapRoadarrowVisibility = i.stylers.visibility,
                    window.La[b].iZ = p)
                    var k = {}
                    z.extend(k, i)
                    i = k.stylers
                    delete k.stylers
                    z.extend(k, i)
                    i = []
                    for (var m in c) {
 if (k[m] && !this.OX(m)) {
 if (m === 'elementType') { i.push(c[m] + ':' + e[k[m]]) } else {
                                switch (k[m]) {
                                case 'poilabel':
                                    k[m] = 'poi'
                                    break
                                case 'districtlabel':
                                    k[m] = 'label'
                                }
                                i.push(c[m] + ':' + k[m])
                            }
}
}
                    i.length > 2 && f.push(i.join('|'))
                }
}
            !window.La[b].wL && window.La[b].bmapLandColor && delete window.La[b].bmapLandColor
            !window.La[b].GM && window.La[b].bmapRailwayFillColor && delete window.La[b].bmapRailwayFillColor
            !window.La[b].HM && window.La[b].bmapRailwayStrokeColor && delete window.La[b].bmapRailwayStrokeColor
            !window.La[b].ZY && window.La[b].bmapRailwayVisibility && delete window.La[b].bmapRailwayVisibility
            !window.La[b].iZ && window.La[b].bmapRoadarrowVisibility && delete window.La[b].bmapRoadarrowVisibility
            return f.join(',')
        },
        d_: function (a) {
            for (var b = {
                featureType: 't',
                elementType: 'e',
                visibility: 'v',
                color: 'c',
                lightness: 'l',
                saturation: 's',
                weight: 'w',
                zoom: 'z',
                hue: 'h'
            }, c = {
                all: 'all',
                geometry: 'g',
                'geometry.fill': 'g.f',
                'geometry.stroke': 'g.s',
                labels: 'l',
                'labels.text.fill': 'l.t.f',
                'labels.text.stroke': 'l.t.s',
                'lables.text': 'l.t',
                'labels.icon': 'l.i'
            }, e = [], f = 0, g; g = a[f]; f++) {
                var i = g.stylers
                delete g.stylers
                z.extend(g, i)
                var i = []; var k
                for (k in b) {
 if (g[k]) {
 if (k === 'elementType') { i.push(b[k] + ':' + c[g[k]]) } else {
                            switch (g[k]) {
                            case 'poilabel':
                                g[k] = 'poi'
                                break
                            case 'districtlabel':
                                g[k] = 'label'
                            }
                            i.push(b[k] + ':' + g[k])
                        }
}
}
                i.length > 2 && e.push(i.join('|'))
            }
            return e.join(',')
        },
        SX: function (a) {
            var b = {}
            z.extend(b, a.stylers)
            delete b.curZoomRegionId
            delete b.curZoomRegion
            delete b.level
            return z.km(b) ? p : t
        },
        TX: function (a, b) {
            var c = a.stylers.level
            return c === l ? p : c === b + '' ? p : t
        },
        OX: function (a) {
            return {
                curZoomRegionId: p,
                curZoomRegion: p
            }[a] ? p : t
        },
        lX: function (a, b) {
            var c = a.stylers.level
               var e = {}
            z.extend(e, b)
            c !== l && (e[parseInt(c, 10)] = p)
            return e
        },
        RN: function (a, b) {
            window.Tt[b] = a
            if (!window.qh[b]) {
 for (var c = this.Db.aj(), e = this.Db.Xh(); c <= e; c++) { window.qh[c] || (window.Tt[c] = a) }
}
        },
        ZE: function (a) {
            if (!window.qh[a]) {
 for (var b = this.Db.aj(), c = this.Db.Xh(); b <= c; b++) {
 window.qh[b] || (window.La[b] || (window.La[b] = {}),
                    window.La[b].bmapLandColor = window.La[a].bmapLandColor,
                    window.La[b].bmapRailwayFillColor = window.La[a].bmapRailwayFillColor,
                    window.La[b].bmapRailwayStrokeColor = window.La[a].bmapRailwayStrokeColor)
}
}
        },
        sU: function (a, b) {
            var c = {}
            z.extend(c, a)
            if (c[b]) {
                for (var e = this.Db.aj(), f = this.Db.Xh(); e <= f; e++) {
 if (!c[e]) {
                        c[e] = p
                        break
                    }
}
                delete c[b]
            }
            return c
        },
        s3: function (a) {
            return a.Fs || a.uid === '0' ? t : p
        },
        DU: function () {
            delete this.xi.RY
        },
        E1: function () {
            this.xi = {}
        },
        Vn: function (a, b, c) {
            if (!this.U.mo) { return t }
            a = a || 'sp' + this.$.P4++
            if (b && b.length !== 0) {
 return c = c || {},
                this.xi[a] = this.xi[a] || {
                    polygon: [],
                    polyline: []
                },
                this.xi = this.xi || {},
                this.xi[a][c.type].push({
                    GE: b,
                    Ub: c.Ub,
                    type: c.type,
                    style: c.style
                }),
                a
}
        }
    })
    function Ta (a, b) {
        if (a) {
            var b = b || {}; var c = ''; var e
            for (e in b) { c = c + '&' + e + '=' + encodeURIComponent(b[e]) }
            var f = function (a) {
                a && (qb = p,
                setTimeout(function () {
                    rb.src = D.Cd + 'images/blank.gif?' + a.src
                }, 50))
            }
               var g = function () {
                var a = sb.shift()
                a && f(a)
            }
            e = (1E8 * Math.random()).toFixed(0)
            qb ? sb.push({
                src: 'product=jsapi&sub_product=jsapi&v=' + D.version + '&sub_product_v=' + D.version + '&t=' + e + '&code=' + a + '&da_src=' + a + c
            }) : f({
                src: 'product=jsapi&sub_product=jsapi&v=' + D.version + '&sub_product_v=' + D.version + '&t=' + e + '&code=' + a + '&da_src=' + a + c
            })
            tb || (z.V(rb, 'load', function () {
                qb = t
                g()
            }),
            z.V(rb, 'error', function () {
                qb = t
                g()
            }),
            tb = p)
        }
    }
    var qb; var tb; var sb = []; var rb = new Image()
    Ta(5E3, {
        device_pixel_ratio: window.devicePixelRatio,
        platform: navigator.platform
    })
    D.ZK = {
        TILE_BASE_URLS: ['gss0.bdstatic.com/5bwHcj7lABFU8t_jkk_Z1zRvfdw6buu', 'gss0.bdstatic.com/5bwHcj7lABFV8t_jkk_Z1zRvfdw6buu', 'gss0.bdstatic.com/5bwHcj7lABFS8t_jkk_Z1zRvfdw6buu', 'gss0.bdstatic.com/5bwHcj7lABFT8t_jkk_Z1zRvfdw6buu', 'gss0.bdstatic.com/5bwHcj7lABFY8t_jkk_Z1zRvfdw6buu'],
        TILE_ONLINE_URLS: ['gss0.bdstatic.com/8bo_dTSlR1gBo1vgoIiO_jowehsv', 'gss0.bdstatic.com/8bo_dTSlRMgBo1vgoIiO_jowehsv', 'gss0.bdstatic.com/8bo_dTSlRcgBo1vgoIiO_jowehsv', 'gss0.bdstatic.com/8bo_dTSlRsgBo1vgoIiO_jowehsv', 'gss0.bdstatic.com/8bo_dTSlQ1gBo1vgoIiO_jowehsv'],
        TIlE_PERSPECT_URLS: ['gss0.bdstatic.com/-OR1cTe9KgQFm2e88IuM_a', 'gss0.bdstatic.com/-ON1cTe9KgQFm2e88IuM_a', 'gss0.bdstatic.com/-OZ1cTe9KgQFm2e88IuM_a', 'gss0.bdstatic.com/-OV1cTe9KgQFm2e88IuM_a'],
        geolocControl: 'gsp0.baidu.com/8LkJsjOpB1gCo2Kml5_Y_D3',
        TILES_YUN_HOST: ['gsp0.baidu.com/-eR1bSahKgkFkRGko9WTAnF6hhy', 'gsp0.baidu.com/-eN1bSahKgkFkRGko9WTAnF6hhy', 'gsp0.baidu.com/-eZ1bSahKgkFkRGko9WTAnF6hhy', 'gsp0.baidu.com/-eV1bSahKgkFkRGko9WTAnF6hhy'],
        traffic: 'gsp0.baidu.com/7_AZsjOpB1gCo2Kml5_Y_DAcsMJiwa',
        iw_pano: 'gss0.bdstatic.com/5LUZemba_QUU8t7mm9GUKT-xh_',
        message: 'gsp0.baidu.com/7vo0bSba2gU2pMbgoY3K',
        baidumap: 'gsp0.baidu.com/80MWsjip0QIZ8tyhnq',
        wuxian: 'gsp0.baidu.com/6a1OdTeaKgQFm2e88IuM_a',
        pano: ['gss0.bdstatic.com/5LUZemba_QUU8t7mm9GUKT-xh_', 'gss0.bdstatic.com/5LUZemfa_QUU8t7mm9GUKT-xh_', 'gss0.bdstatic.com/5LUZemja_QUU8t7mm9GUKT-xh_'],
        main_domain_nocdn: {
            baidu: 'gsp0.baidu.com/9_Q4sjOpB1gCo2Kml5_Y_D3',
            other: 'api.map.baidu.com'
        },
        main_domain_cdn: {
            baidu: ['gss0.bdstatic.com/9_Q4vHSd2RZ3otebn9fN2DJv', 'gss0.baidu.com/9_Q4vXSd2RZ3otebn9fN2DJv', 'gss0.bdstatic.com/9_Q4vnSd2RZ3otebn9fN2DJv'],
            other: ['api.map.baidu.com'],
            webmap: ['gss0.baidu.com/6b1IcTe9R1gBo1vgoIiO_jowehsv']
        },
        map_click: 'gsp0.baidu.com/80MWbzKh2wt3n2qy8IqW0jdnxx1xbK',
        vector_traffic: 'gss0.bdstatic.com/8aZ1cTe9KgQIm2_p8IuM_a'
    }
    D.tX = {
        TILE_BASE_URLS: ['shangetu0.map.bdimg.com', 'shangetu1.map.bdimg.com', 'shangetu2.map.bdimg.com', 'shangetu3.map.bdimg.com', 'shangetu4.map.bdimg.com'],
        TILE_ONLINE_URLS: ['online0.map.bdimg.com', 'online1.map.bdimg.com', 'online2.map.bdimg.com', 'online3.map.bdimg.com', 'online4.map.bdimg.com'],
        TIlE_PERSPECT_URLS: ['d0.map.baidu.com', 'd1.map.baidu.com', 'd2.map.baidu.com', 'd3.map.baidu.com'],
        geolocControl: 'loc.map.baidu.com',
        TILES_YUN_HOST: ['g0.api.map.baidu.com', 'g1.api.map.baidu.com', 'g2.api.map.baidu.com', 'g3.api.map.baidu.com'],
        traffic: 'its.map.baidu.com:8002',
        iw_pano: 'pcsv0.map.bdimg.com',
        message: 'j.map.baidu.com',
        baidumap: 'map.baidu.com',
        wuxian: 'wuxian.baidu.com',
        pano: ['pcsv0.map.bdimg.com', 'pcsv1.map.bdimg.com', 'pcsv2.map.bdimg.com'],
        main_domain_nocdn: {
            baidu: 'api.map.baidu.com'
        },
        main_domain_cdn: {
            baidu: ['api0.map.bdimg.com', 'api1.map.bdimg.com', 'api2.map.bdimg.com'],
            webmap: ['webmap0.map.bdimg.com']
        },
        map_click: 'mapclick.map.baidu.com',
        vector_traffic: 'or.map.bdimg.com'
    }
    D.I_ = {
        '0': {
            proto: 'http://',
            domain: D.tX
        },
        1: {
            proto: 'https://',
            domain: D.ZK
        },
        2: {
            proto: 'https://',
            domain: D.ZK
        }
    }
    window.BMAP_PROTOCOL && window.BMAP_PROTOCOL === 'https' && (window.HOST_TYPE = 2)
    D.Nt = window.HOST_TYPE || '0'
    D.url = D.I_[D.Nt]
    D.Uo = D.url.proto + D.url.domain.baidumap + '/'
    D.Cd = D.url.proto + (D.Nt == '2' ? D.url.domain.main_domain_nocdn.other : D.url.domain.main_domain_nocdn.baidu) + '/'
    // D.oa = D.url.proto + ("2" == D.Nt ? D.url.domain.main_domain_cdn.other[0] : D.url.domain.main_domain_cdn.baidu[0]) + "/";
    D.oa = ''
    D.Ri = D.url.proto + D.url.domain.main_domain_cdn.webmap[0] + '/'
    D.Yh = function (a, b) {
        var c; var e; var b = b || ''
        switch (a) {
        case 'main_domain_nocdn':
            c = D.Cd + b
            break
        case 'main_domain_cdn':
            c = D.oa + b
            break
        default:
            e = D.url.domain[a],
            Object.prototype.toString.call(e) == '[object Array]' ? (c = [],
            z.lc.Nb(e, function (a, e) {
                c[e] = D.url.proto + a + '/' + b
            })) : c = D.url.proto + D.url.domain[a] + '/' + b
        }
        return c
    }

    function ub (a) {
        var b = {
            duration: 1E3,
            Hc: 30,
            oo: 0,
            $b: vb.FL,
            Ws: u()
        }
        this.Wf = []
        if (a) {
 for (var c in a) { b[c] = a[c] }
}
        this.m = b
        if (Za(b.oo)) {
            var e = this
            setTimeout(function () {
                e.start()
            }, b.oo)
        } else { b.oo != wb && this.start() }
    }
    var wb = 'INFINITE'
    ub.prototype.start = function () {
        this.ju = eb()
        this.fz = this.ju + this.m.duration
        xb(this)
    }

    ub.prototype.add = function (a) {
        this.Wf.push(a)
    }

    function xb (a) {
        var b = eb()
        b >= a.fz ? ($a(a.m.za) && a.m.za(a.m.$b(1)),
        $a(a.m.finish) && a.m.finish(),
        a.Wf.length > 0 && (b = a.Wf[0],
        b.Wf = [].concat(a.Wf.slice(1)),
        b.start())) : (a.Nx = a.m.$b((b - a.ju) / a.m.duration),
        $a(a.m.za) && a.m.za(a.Nx),
        a.NE || (a.pr = setTimeout(function () {
            xb(a)
        }, 1E3 / a.m.Hc)))
    }
    ub.prototype.stop = function (a) {
        this.NE = p
        for (var b = 0; b < this.Wf.length; b++) {
 this.Wf[b].stop(),
            this.Wf[b] = s
}
        this.Wf.length = 0
        this.pr && (clearTimeout(this.pr),
        this.pr = s)
        this.m.Ws(this.Nx)
        a && (this.fz = this.ju,
        xb(this))
    }

    ub.prototype.cancel = ha(1)
    var vb = {
        FL: function (a) {
            return a
        },
        reverse: function (a) {
            return 1 - a
        },
        hC: function (a) {
            return a * a
        },
        fC: function (a) {
            return Math.pow(a, 3)
        },
        Vr: function (a) {
            return -(a * (a - 2))
        },
        RJ: function (a) {
            return Math.pow(a - 1, 3) + 1
        },
        gC: function (a) {
            return a < 0.5 ? 2 * a * a : -2 * (a - 2) * a - 1
        },
        U1: function (a) {
            return a < 0.5 ? 4 * Math.pow(a, 3) : 4 * Math.pow(a - 1, 3) + 1
        },
        V1: function (a) {
            return (1 - Math.cos(Math.PI * a)) / 2
        }
    }
    vb['ease-in'] = vb.hC
    vb['ease-out'] = vb.Vr
    var H = {
        lF: 34,
        mF: 21,
        nF: new P(21, 32),
        kO: new P(10, 32),
        jO: new P(24, 36),
        iO: new P(12, 36),
        jF: new P(13, 1),
        sa: D.oa + 'images/',
        m3: 'http://api0.map.bdimg.com/images/',
        kF: D.oa + 'images/markers_new.png',
        gO: 24,
        hO: 73,
        vB: {
            '\u5317\u4eac': {
                Dx: 'bj',
                o: new J(116.403874, 39.914889)
            },
            '\u4e0a\u6d77': {
                Dx: 'sh',
                o: new J(121.487899, 31.249162)
            },
            '\u6df1\u5733': {
                Dx: 'sz',
                o: new J(114.025974, 22.546054)
            },
            '\u5e7f\u5dde': {
                Dx: 'gz',
                o: new J(113.30765, 23.120049)
            }
        },
        fontFamily: 'arial,sans-serif'
    }
    z.ga.Qe ? (z.extend(H, {
        DJ: 'url(' + H.sa + 'ruler.cur),crosshair',
        yc: '-moz-grab',
        Gd: '-moz-grabbing'
    }),
    z.platform.rL && (H.fontFamily = 'arial,simsun,sans-serif')) : z.ga.Zv || z.ga.Mx ? z.extend(H, {
        DJ: 'url(' + H.sa + 'ruler.cur) 2 6,crosshair',
        yc: 'url(' + H.sa + 'openhand.cur) 8 8,default',
        Gd: 'url(' + H.sa + 'closedhand.cur) 8 8,move'
    }) : z.extend(H, {
        DJ: 'url(' + H.sa + 'ruler.cur),crosshair',
        yc: 'url(' + H.sa + 'openhand.cur),default',
        Gd: 'url(' + H.sa + 'closedhand.cur),move'
    })
    function yb (a, b) {
        var c = a.style
        c.left = b[0] + 'px'
        c.top = b[1] + 'px'
    }
    function zb (a) {
        z.ga.ma > 0 ? a.unselectable = 'on' : a.style.MozUserSelect = 'none'
    }
    function Ab (a) {
        return a && a.parentNode && a.parentNode.nodeType !== 11
    }
    function Bb (a, b) {
        z.R.bx(a, 'beforeEnd', b)
        return a.lastChild
    }
    function Cb (a) {
        for (var b = {
            left: 0,
            top: 0
        }; a && a.offsetParent;) {
 b.left += a.offsetLeft,
            b.top += a.offsetTop,
            a = a.offsetParent
}
        return b
    }
    function na (a) {
        a = window.event || a
        a.stopPropagation ? a.stopPropagation() : a.cancelBubble = p
    }
    function Db (a) {
        a = window.event || a
        a.preventDefault ? a.preventDefault() : a.returnValue = t
        return t
    }
    function oa (a) {
        na(a)
        return Db(a)
    }
    function Eb () {
        var a = document.documentElement
           var b = document.body
        return a && (a.scrollTop || a.scrollLeft) ? [a.scrollTop, a.scrollLeft] : b ? [b.scrollTop, b.scrollLeft] : [0, 0]
    }
    function Fb (a, b) {
        if (a && b) { return Math.round(Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2))) }
    }
    function Gb (a, b) {
        var c = []; var b = b || function (a) {
            return a
        }
         var e
        for (e in a) { c.push(e + '=' + b(a[e])) }
        return c.join('&')
    }
    function O (a, b, c) {
        var e = document.createElement(a)
        c && (e = document.createElementNS(c, a))
        return z.R.sE(e, b || {})
    }
    function Ya (a) {
        if (a.currentStyle) { return a.currentStyle }
        if (a.ownerDocument && a.ownerDocument.defaultView) { return a.ownerDocument.defaultView.getComputedStyle(a, s) }
    }
    function $a (a) {
        return typeof a === 'function'
    }
    function Za (a) {
        return typeof a === 'number'
    }
    function bb (a) {
        return typeof a === 'string'
    }
    function Hb (a) {
        return typeof a !== 'undefined'
    }
    function Ib (a) {
        return typeof a === 'object'
    }
    var Jb = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
    function Kb (a) {
        for (var b = '', c = 0; c < a.length; c++) {
            var e = a.charCodeAt(c) << 1
               var f = e = e.toString(2)
            e.length < 8 && (f = '00000000' + e,
            f = f.substr(e.length, 8))
            b += f
        }
        a = 5 - b.length % 5
        e = []
        for (c = 0; c < a; c++) { e[c] = '0' }
        b = e.join('') + b
        f = []
        for (c = 0; c < b.length / 5; c++) {
 e = b.substr(5 * c, 5),
            f.push(String.fromCharCode(parseInt(e, 2) + 50))
}
        return f.join('') + a.toString()
    }
    function Lb (a) {
        var b = ''; var c; var e; var f = ''; var g; var i = ''; var k = 0
        g = /[^A-Za-z0-9\+\/\=]/g
        if (!a || g.exec(a)) { return a }
        a = a.replace(/[^A-Za-z0-9\+\/\=]/g, '')
        do {
 c = Jb.indexOf(a.charAt(k++)),
            e = Jb.indexOf(a.charAt(k++)),
            g = Jb.indexOf(a.charAt(k++)),
            i = Jb.indexOf(a.charAt(k++)),
            c = c << 2 | e >> 4,
            e = (e & 15) << 4 | g >> 2,
            f = (g & 3) << 6 | i,
            b += String.fromCharCode(c),
            g != 64 && (b += String.fromCharCode(e)),
            i != 64 && (b += String.fromCharCode(f))
}
        while (k < a.length);return b
    }
    var Q = z.lang.Zt
    function I () {
        return !(!z.platform.zD && !z.platform.RX && !z.platform.jj)
    }
    function Xa () {
        return !(!z.platform.rL && !z.platform.jL && !z.platform.ZX)
    }
    function eb () {
        return (new Date()).getTime()
    }
    function Mb () {
        var a = document.body.appendChild(O('div'))
        a.innerHTML = '<v:shape id="vml_tester1" adj="1" />'
        var b = a.firstChild
        if (!b.style) { return t }
        b.style.behavior = 'url(#default#VML)'
        b = b ? typeof b.adj === 'object' : p
        a.parentNode.removeChild(a)
        return b
    }
    function Nb () {
        return !!document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#Shape', '1.1')
    }
    function Ob () {
        return !!O('canvas').getContext
    }
    function Pb (a) {
        return a * Math.PI / 180
    }
    D.eY = (function () {
        var a = p
           var b = p
           var c = p
           var e = p
           var f = 0
           var g = 0
           var i = 0
           var k = 0
        return {
            LP: function () {
                f += 1
                a && (a = t,
                setTimeout(function () {
                    Ta(5054, {
                        pic: f
                    })
                    a = p
                    f = 0
                }, 1E4))
            },
            z0: function () {
                g += 1
                b && (b = t,
                setTimeout(function () {
                    Ta(5055, {
                        move: g
                    })
                    b = p
                    g = 0
                }, 1E4))
            },
            B0: function () {
                i += 1
                c && (c = t,
                setTimeout(function () {
                    Ta(5056, {
                        zoom: i
                    })
                    c = p
                    i = 0
                }, 1E4))
            },
            A0: function (a) {
                k += a
                e && (e = t,
                setTimeout(function () {
                    Ta(5057, {
                        tile: k
                    })
                    e = p
                    k = 0
                }, 5E3))
            }
        }
    }())
    D.Fp = {
        AF: '#83a1ff',
        Hp: '#808080'
    }
    function Qb (a, b, c) {
        b.QD || (b.QD = [],
        b.handle = {})
        b.QD.push({
            filter: c,
            bs: a
        })
        b.addEventListener || (b.addEventListener = function (a, c) {
            b.attachEvent('on' + a, c)
        }
        )
        b.handle.click || (b.addEventListener('click', function (a) {
            for (var c = a.target || a.srcElement; c != b;) {
                Rb(b.QD, function (b, i) {
                    RegExp(i.filter).test(c.getAttribute('filter')) && i.bs.call(c, a, c.getAttribute('filter'))
                })
                c = c.parentNode
            }
        }, t),
        b.handle.click = p)
    }
    function Rb (a, b) {
        for (var c = 0, e = a.length; c < e; c++) { b(c, a[c]) }
    }
    void (function (a, b, c) {
        void (function (a, b, c) {
            function i (a) {
                if (!a.no) {
                    for (var c = p, e = [], g = a.eZ, k = 0; g && k < g.length; k++) {
                        var m = g[k]
                           var n = da[m] = da[m] || {}
                        if (n.no || n == a) { e.push(n.Mc) } else {
                            c = t
                            if (!n.gV && (m = (va.get('alias') || {})[m] || m + '.js',
                            !N[m])) {
                                N[m] = p
                                var o = b.createElement('script')
                                   var q = b.getElementsByTagName('script')[0]
                                o.async = p
                                o.src = m
                                q.parentNode.insertBefore(o, q)
                            }
                            n.gy = n.gy || {}
                            n.gy[a.name] = a
                        }
                    }
                    if (c) {
                        a.no = p
                        a.yJ && (a.Mc = a.yJ.apply(a, e))
                        for (var v in a.gy) { i(a.gy[v]) }
                    }
                }
            }
            function k (a) {
                return (a || new Date()) - F
            }
            function m (a, b, c) {
                if (a) {
                    typeof a === 'string' && (c = b,
                    b = a,
                    a = L)
                    try {
                        a == L ? (M[b] = M[b] || [],
                        M[b].unshift(c)) : a.addEventListener ? a.addEventListener(b, c, t) : a.attachEvent && a.attachEvent('on' + b, c)
                    } catch (e) {}
                }
            }
            function n (a, b, c) {
                if (a) {
                    typeof a === 'string' && (c = b,
                    b = a,
                    a = L)
                    try {
                        if (a == L) {
                            var e = M[b]
                            if (e) {
 for (var f = e.length; f--;) { e[f] === c && e.splice(f, 1) }
}
                        } else { a.removeEventListener ? a.removeEventListener(b, c, t) : a.detachEvent && a.detachEvent('on' + b, c) }
                    } catch (g) {}
                }
            }
            function o (a) {
                var b = M[a]
                   var c = 0
                if (b) {
                    for (var e = [], f = arguments, g = 1; g < f.length; g++) { e.push(f[g]) }
                    for (g = b.length; g--;) { b[g].apply(this, e) && c++ }
                    return c
                }
            }
            function q (a, b) {
                if (a && b) {
                    var c = new Image(1, 1); var e = []; var f = 'img_' + +new Date(); var g
                    for (g in b) { b[g] && e.push(g + '=' + encodeURIComponent(b[g])) }
                    L[f] = c
                    c.onload = c.onerror = function () {
                        L[f] = c = c.onload = c.onerror = s
                        delete L[f]
                    }

                    c.src = a + '?' + e.join('&')
                }
            }
            function v () {
                var a = arguments
                   var b = a[0]
                if (this.xJ || /^(on|un|set|get|create)$/.test(b)) {
                    for (var b = y.prototype[b], c = [], e = 1, f = a.length; e < f; e++) { c.push(a[e]) }
                    typeof b === 'function' && b.apply(this, c)
                } else { this.XI.push(a) }
            }
            function w (a, b) {
                var c = {}; var e
                for (e in a) { a.hasOwnProperty(e) && (c[e] = a[e]) }
                for (e in b) { b.hasOwnProperty(e) && (c[e] = b[e]) }
                return c
            }
            function y (a) {
                this.name = a
                this.$r = {
                    protocolParameter: {
                        postUrl: s,
                        protocolParameter: s
                    }
                }
                this.XI = []
                this.alog = L
            }
            function A (a) {
                a = a || 'default'
                if (a == '*') {
                    var a = []; var b
                    for (b in T) { a.push(T[b]) }
                    return a
                }
                (b = T[a]) || (b = T[a] = new y(a))
                return b
            }
            var B = c.alog
            if (!B || !B.no) {
                var C = b.all && a.attachEvent
                   var F = B && B.HD || +new Date()
                   var E = a.E3 || (+new Date()).toString(36) + Math.random().toString(36).substr(2, 3)
                   var G = 0
                   var N = {}
                   var L = function (a) {
                    var b = arguments; var c; var e; var f; var g
                    if (a == 'define' || a == 'require') {
                        for (e = 1; e < b.length; e++) {
 switch (typeof b[e]) {
                            case 'string':
                                c = b[e]
                                break
                            case 'object':
                                f = b[e]
                                break
                            case 'function':
                                g = b[e]
                            }
}
                        a == 'require' && (c && !f && (f = [c]),
                        c = s)
                        c = !c ? '#' + G++ : c
                        e = da[c] = da[c] || {}
                        e.no || (e.name = c,
                        e.eZ = f,
                        e.yJ = g,
                        a == 'define' && (e.gV = p),
                        i(e))
                    } else {
 typeof a === 'function' ? a(L) : ('' + a).replace(/^(?:([\w$_]+)\.)?(\w+)$/, function (a, c, e) {
                            b[0] = e
                            v.apply(L.XE(c), b)
                        })
}
                }
                   var M = {}
                   var T = {}
                   var da = {
                    o1: {
                        name: 'alog',
                        no: p,
                        Mc: L
                    }
                }
                y.prototype.start = y.prototype.create = function (a) {
                    if (!this.xJ) {
                        typeof a === 'object' && this.set(a)
                        this.xJ = new Date()
                        for (this.as('create', this); a = this.XI.shift();) { v.apply(this, a) }
                    }
                }

                y.prototype.send = function (a, b) {
                    var c = w({
                        ts: k().toString(36),
                        t: a,
                        sid: E
                    }, this.$r)
                    if (typeof b === 'object') { c = w(c, b) } else {
                        var e = arguments
                        switch (a) {
                        case 'pageview':
                            e[1] && (c.page = e[1])
                            e[2] && (c.title = e[2])
                            break
                        case 'event':
                            e[1] && (c.eventCategory = e[1])
                            e[2] && (c.eventAction = e[2])
                            e[3] && (c.eventLabel = e[3])
                            e[4] && (c.eventValue = e[4])
                            break
                        case 'timing':
                            e[1] && (c.timingCategory = e[1])
                            e[2] && (c.timingVar = e[2])
                            e[3] && (c.timingValue = e[3])
                            e[4] && (c.timingLabel = e[4])
                            break
                        case 'exception':
                            e[1] && (c.exDescription = e[1])
                            e[2] && (c.exFatal = e[2])
                            break
                        default:
                            return
                        }
                    }
                    this.as('send', c)
                    var f
                    if (e = this.$r.protocolParameter) {
                        var g = {}
                        for (f in c) { e[f] !== s && (g[e[f] || f] = c[f]) }
                        f = g
                    } else { f = c }
                    q(this.$r.postUrl, f)
                }

                y.prototype.set = function (a, b) {
                    if (typeof a === 'string') {
 a == 'protocolParameter' && (b = w({
                            postUrl: s,
                            protocolParameter: s
                        }, b)),
                        this.$r[a] = b
} else if (typeof a === 'object') {
 for (var c in a) { this.set(c, a[c]) }
}
                }

                y.prototype.get = function (a, b) {
                    var c = this.$r[a]
                    typeof b === 'function' && b(c)
                    return c
                }

                y.prototype.as = function (a, b) {
                    return L.as(this.name + '.' + a, b)
                }

                y.prototype.V = function (a, b) {
                    L.V(this.name + '.' + a, b)
                }

                y.prototype.dd = function (a, b) {
                    L.dd(this.name + '.' + a, b)
                }

                L.name = 'alog'
                L.Ub = E
                L.no = p
                L.timestamp = k
                L.dd = n
                L.V = m
                L.as = o
                L.XE = A
                L('init')
                var ba = y.prototype
                U(ba, {
                    start: ba.start,
                    create: ba.create,
                    send: ba.send,
                    set: ba.set,
                    get: ba.get,
                    on: ba.V,
                    un: ba.dd,
                    fire: ba.as
                })
                var va = A()
                va.set('protocolParameter', {
                    n1: s
                })
                if (B) {
                    ba = [].concat(B.xb || [], B.ct || [])
                    B.xb = B.ct = s
                    for (var ya in L) { L.hasOwnProperty(ya) && (B[ya] = L[ya]) }
                    L.xb = L.ct = {
                        push: function (a) {
                            L.apply(L, a)
                        }
                    }
                    for (B = 0; B < ba.length; B++) { L.apply(L, ba[B]) }
                }
                c.alog = L
                C && m(b, 'mouseup', function (a) {
                    a = a.target || a.srcElement
                    a.nodeType == 1 && /^ajavascript:/i.test(a.tagName + a.href)
                })
                var Ea = t
                a.onerror = function (a, b, e, f) {
                    var i = p
                    !b && /^script error/i.test(a) && (Ea ? i = t : Ea = p)
                    i && c.alog('exception.send', 'exception', {
                        Ss: a,
                        GD: b,
                        Os: e,
                        Ol: f
                    })
                    return t
                }

                c.alog('exception.on', 'catch', function (a) {
                    c.alog('exception.send', 'exception', {
                        Ss: a.Ss,
                        GD: a.path,
                        Os: a.Os,
                        method: a.method,
                        bK: 'catch'
                    })
                })
            }
        }(a, b, c))
        void (function (a, b, c) {
            var i = '18_3'
            I() && (i = '18_4')
            var k = ''
            a.location.protocol === 'https:' && (k = '')
            var m = Math.random
               var k = k + '/static/bmap/images/st.gif'
               var n = {
                kh: '0.1'
            }
               var o = {
                kh: '0.1'
            }
               var q = {
                kh: '0.1'
            }
               var v = {
                kh: '0'
            }
            if (n && n.kh && m() < n.kh) {
                var w = c.alog.XE('monkey'); var y; var n = a.screen; var A = b.referrer
                w.set('ver', 5)
                w.set('pid', 241)
                n && w.set('px', n.width + '*' + n.height)
                w.set('ref', A)
                c.alog('monkey.on', 'create', function () {
                    y = c.alog.timestamp
                    w.set('protocolParameter', {
                        reports: s
                    })
                })
                c.alog('monkey.on', 'send', function (a) {
                    a.t == 'pageview' && (a.cmd = 'open')
                    a.now && (a.ts = y(a.now).toString(36),
                    a.now = '')
                })
                c.alog('monkey.create', {
                    page: i,
                    pid: '241',
                    p: '18',
                    dv: 6,
                    postUrl: k,
                    reports: {
                        refer: 1
                    }
                })
                c.alog('monkey.send', 'pageview', {
                    now: +new Date()
                })
            }
            if (o && o.kh && m() < o.kh) {
                var B = t
                a.onerror = function (a, b, e, f) {
                    var i = p
                    !b && /^script error/i.test(a) && (B ? i = t : B = p)
                    i && c.alog('exception.send', 'exception', {
                        Ss: a,
                        GD: b,
                        Os: e,
                        Ol: f
                    })
                    return t
                }

                c.alog('exception.on', 'catch', function (a) {
                    c.alog('exception.send', 'exception', {
                        Ss: a.Ss,
                        GD: a.path,
                        Os: a.Os,
                        method: a.method,
                        bK: 'catch'
                    })
                })
                c.alog('exception.create', {
                    postUrl: k,
                    dv: 7,
                    page: i,
                    pid: '170',
                    p: '18'
                })
            }
            q && (q.kh && m() < q.kh) && (c.alog('cus.on', 'time', function (a) {
                var b = {}; var e = t; var f
                if (a.toString() === '[object Object]') {
                    for (var i in a) {
 i == 'page' ? b.page = a[i] : (f = parseInt(a[i]),
                        f > 0 && /^z_/.test(i) && (e = p,
                        b[i] = f))
}
                    e && c.alog('cus.send', 'time', b)
                }
            }),
            c.alog('cus.on', 'count', function (a) {
                var b = {}
                   var e = t
                typeof a === 'string' && (a = [a])
                if (a instanceof Array) {
 for (var f = 0; f < a.length; f++) {
 /^z_/.test(a[f]) ? (e = p,
                        b[a[f]] = 1) : /^page:/.test(a[f]) && (b.page = a[f].substring(5))
}
}
                e && c.alog('cus.send', 'count', b)
            }),
            c.alog('cus.create', {
                dv: 3,
                postUrl: k,
                page: i,
                p: '18'
            }))
            if (v && v.kh && m() < v.kh) {
                var C = ['Moz', 'O', 'ms', 'Webkit']
                   var F = ['-webkit-', '-moz-', '-o-', '-ms-']
                   var E = function () {
                    return typeof b.createElement !== 'function' ? b.createElement(arguments[0]) : b.createElement.apply(b, arguments)
                }
                   var G = E('dpFeatureTest').style
                   var N = function (a) {
                    return L(a, l, l)
                }
                   var L = function (a, b, c) {
                    var e = a.charAt(0).toUpperCase() + a.slice(1)
                       var f = (a + ' ' + C.join(e + ' ') + e).split(' ')
                    if (typeof b === 'string' || typeof b === 'undefined') { return M(f, b) }
                    f = (a + ' ' + C.join(e + ' ') + e).split(' ')
                    a: {
                        var a = f; var g
                        for (g in a) {
 if (a[g] in b) {
                                if (c === t) {
                                    b = a[g]
                                    break a
                                }
                                g = b[a[g]]
                                b = typeof g === 'function' ? fnBind(g, c || b) : g
                                break a
                            }
}
                        b = t
                    }
                    return b
                }
                   var M = function (a, b) {
                    var c, e, f
                    e = a.length
                    for (c = 0; c < e; c++) {
                        f = a[c]
                        ~('' + f).indexOf('-') && (f = T(f))
                        if (G[f] !== l) { return b == 'pfx' ? f : p }
                    }
                    return t
                }
                   var T = function (a) {
                    return a.replace(/([a-z])-([a-z])/g, function (a, b, c) {
                        return b + c.toUpperCase()
                    }).replace(/^-/, '')
                }
                   var da = function (a, b, c) {
                    if (a.indexOf('@') === 0) { return atRule(a) }
                    a.indexOf('-') != -1 && (a = T(a))
                    return !b ? L(a, 'pfx') : L(a, b, c)
                }
                   var ba = function () {
                    var a = E('canvas')
                    return !(!a.getContext || !a.getContext('2d'))
                }
                   var va = function () {
                    var a = E('div')
                    return 'draggable' in a || 'ondragstart' in a && 'ondrop' in a
                }
                   var ya = function () {
                    try {
                        localStorage.setItem('localStorage', 'localStorage')
                        localStorage.removeItem('localStorage')
                        return p
                    } catch (a) {
                        return t
                    }
                }
                   var Ea = function () {
                    return 'content' in b.createElement('template')
                }
                   var ra = function () {
                    return 'createShadowRoot' in b.createElement('a')
                }
                   var Ua = function () {
                    return 'registerElement' in b
                }
                   var re = function () {
                    return 'import' in b.createElement('link')
                }
                   var Oc = function () {
                    return 'getItems' in b
                }
                   var Ci = function () {
                    return 'EventSource' in window
                }
                   var se = function (a, b) {
                    var c = new Image()
                    c.onload = function () {
                        b(a, c.width > 0 && c.height > 0)
                    }

                    c.onerror = function () {
                        b(a, t)
                    }

                    c.src = 'data:image/webp;base64,' + {
                        H3: 'UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA',
                        G3: 'UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==',
                        alpha: 'UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==',
                        Yj: 'UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA'
                    }[a]
                }
                   var te = function (a, b) {
                    return Vb.Th['WebP-' + a] = b
                }
                   var Di = function () {
                    return 'openDatabase' in a
                }
                   var Ei = function () {
                    return 'performance' in a && 'timing' in a.performance
                }
                   var Fi = function () {
                    return 'performance' in a && 'mark' in a.performance
                }
                   var Gi = function () {
                    return !(!Array.prototype || !Array.prototype.every || !Array.prototype.filter || !Array.prototype.forEach || !Array.prototype.indexOf || !Array.prototype.lastIndexOf || !Array.prototype.map || !Array.prototype.some || !Array.prototype.reduce || !Array.prototype.reduceRight || !Array.isArray)
                }
                   var Hi = function () {
                    return 'Promise' in a && 'cast' in a.Ip && 'resolve' in a.Ip && 'reject' in a.Ip && 'all' in a.Ip && 'race' in a.Ip && (function () {
                        var b
                        new a.Ip(function (a) {
                            b = a
                        }
                        )
                        return typeof b === 'function'
                    }())
                }
                   var Ii = function () {
                    var b = !!a.m0
                       var c = a.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest()
                    return !!a.q0 && b && c
                }
                   var Ji = function () {
                    return 'geolocation' in navigator
                }
                   var Ki = function () {
                    var b = E('canvas')
                       var c = 'probablySupportsContext' in b ? 'probablySupportsContext' : 'supportsContext'
                    return c in b ? b[c]('webgl') || b[c]('experimental-webgl') : 'WebGLRenderingContext' in a
                }
                   var Li = function () {
                    return !!b.createElementNS && !!b.createElementNS('http://www.w3.org/2000/svg', 'svg').J1
                }
                   var Mi = function () {
                    return !!a.x0
                }
                   var Ni = function () {
                    return 'WebSocket' in a && a.u0.i0 === 2
                }
                   var Oi = function () {
                    return !!b.createElement('video').canPlayType
                }
                   var Pi = function () {
                    return !!b.createElement('audio').canPlayType
                }
                   var Qi = function () {
                    return !!(a.history && 'pushState' in a.history)
                }
                   var Ri = function () {
                    return !(!a.k0 || !a.l0)
                }
                   var Si = function () {
                    return 'postMessage' in window
                }
                   var Ti = function () {
                    return !!a.webkitNotifications || 'Notification' in a && 'permission' in a.DO && 'requestPermission' in a.DO
                }
                   var Ui = function () {
                    for (var b = ['webkit', 'moz', 'o', 'ms'], c = a.requestAnimationFrame, f = 0; f < b.length && !c; ++f) { c = a[b[f] + 'RequestAnimationFrame'] }
                    return !!c
                }
                   var Vi = function () {
                    return 'JSON' in a && 'parse' in JSON && 'stringify' in JSON
                }
                   var Wi = function () {
                    return !(!da('exitFullscreen', b, t) && !da('cancelFullScreen', b, t))
                }
                   var Xi = function () {
                    return !!da('Intl', a)
                }
                   var Yi = function () {
                    return N('flexBasis')
                }
                   var Zi = function () {
                    return !!N('perspective')
                }
                   var $i = function () {
                    return N('shapeOutside')
                }
                   var aj = function () {
                    var a = E('div')
                    a.style.cssText = F.join('filter:blur(2px); ')
                    return !!a.style.length && (b.documentMode === l || b.documentMode > 9)
                }
                   var bj = function () {
                    return 'XMLHttpRequest' in a && 'withCredentials' in new XMLHttpRequest()
                }
                   var cj = function () {
                    return E('progress').max !== l
                }
                   var dj = function () {
                    return E('meter').max !== l
                }
                   var ej = function () {
                    return 'sendBeacon' in navigator
                }
                   var fj = function () {
                    return N('borderRadius')
                }
                   var gj = function () {
                    return N('boxShadow')
                }
                   var hj = function () {
                    var a = E('div').style
                    a.cssText = F.join('opacity:.55;')
                    return /^0.55$/.test(a.opacity)
                }
                   var ij = function () {
                    return M(['textShadow'], l)
                }
                   var jj = function () {
                    return N('animationName')
                }
                   var kj = function () {
                    return N('transition')
                }
                   var lj = function () {
                    return navigator.userAgent.indexOf('Android 2.') === -1 && N('transform')
                }
                   var Vb = {
                    Th: {},
                    ra: function (a, b, c) {
                        this.Th[a] = b.apply(this, [].slice.call(arguments, 2))
                    },
                    Dd: function (a, b) {
                        a.apply(this, [].slice.call(arguments, 1))
                    },
                    kZ: function () {
                        this.ra('bdrs', fj)
                        this.ra('bxsd', gj)
                        this.ra('opat', hj)
                        this.ra('txsd', ij)
                        this.ra('anim', jj)
                        this.ra('trsi', kj)
                        this.ra('trfm', lj)
                        this.ra('flex', Yi)
                        this.ra('3dtr', Zi)
                        this.ra('shpe', $i)
                        this.ra('fltr', aj)
                        this.ra('cavs', ba)
                        this.ra('dgdp', va)
                        this.ra('locs', ya)
                        this.ra('wctem', Ea)
                        this.ra('wcsdd', ra)
                        this.ra('wccse', Ua)
                        this.ra('wchti', re)
                        this.Dd(se, 'lossy', te)
                        this.Dd(se, 'lossless', te)
                        this.Dd(se, 'alpha', te)
                        this.Dd(se, 'animation', te)
                        this.ra('wsql', Di)
                        this.ra('natm', Ei)
                        this.ra('ustm', Fi)
                        this.ra('arra', Gi)
                        this.ra('prms', Hi)
                        this.ra('xhr2', Ii)
                        this.ra('wbgl', Ki)
                        this.ra('geol', Ji)
                        this.ra('svg', Li)
                        this.ra('work', Mi)
                        this.ra('wbsk', Ni)
                        this.ra('vido', Oi)
                        this.ra('audo', Pi)
                        this.ra('hsty', Qi)
                        this.ra('file', Ri)
                        this.ra('psmg', Si)
                        this.ra('wknf', Ti)
                        this.ra('rqaf', Ui)
                        this.ra('json', Vi)
                        this.ra('flsc', Wi)
                        this.ra('i18n', Xi)
                        this.ra('cors', bj)
                        this.ra('prog', cj)
                        this.ra('metr', dj)
                        this.ra('becn', ej)
                        this.ra('mcrd', Oc)
                        this.ra('esrc', Ci)
                    }
                }
                   var w = c.alog.XE('feature')
                w.V('commit', function () {
                    Vb.kZ()
                    var a = setInterval(function () {
                        if ('WebP-lossy' in Vb.Th && 'WebP-lossless' in Vb.Th && 'WebP-alpha' in Vb.Th && 'WebP-animation' in Vb.Th) {
                            for (var b in Vb.Th) { Vb.Th[b] = Vb.Th[b] ? 'y' : 'n' }
                            w.send('feature', Vb.Th)
                            clearInterval(a)
                        }
                    }, 500)
                })
                c.alog('feature.create', {
                    S1: 4,
                    k4: k,
                    page: i,
                    xb: '18'
                })
                c.alog('feature.fire', 'commit')
            }
        }(a, b, c))
    }(window, document, D))
    D.Qp = D.alog || u()
    D.alog('cus.fire', 'count', 'z_loadscriptcount')
    location.protocol === 'https:' && D.alog('cus.fire', 'count', 'z_httpscount')
    function Sb (a) {
        var b = window.TILE_VERSION
           var c = '20170927'
        b && b.ditu && (b = b.ditu,
        b[a] && b[a].updateDate && (c = b[a].updateDate))
        return c
    }
    ;function pa (a, b) {
        if (b) {
            var c = (1E5 * Math.random()).toFixed(0)
            D._rd['_cbk' + c] = function (a) {
                b && b(a)
                delete D._rd['_cbk' + c]
            }

            a += '&callback=BMap._rd._cbk' + c
        }
        var e = O('script', {
            type: 'text/javascript'
        })
        e.charset = 'utf-8'
        e.src = a

        // var paat = /api.map.baidu.com\/custom\/v2/
        // if (paat.test(a)){
            // console.log('===> function pa: ', a)
        // }

        e.addEventListener ? e.addEventListener('load', function (a) {
            a = a.target
            a.parentNode.removeChild(a)
        }, t) : e.attachEvent && e.attachEvent('onreadystatechange', function () {
            var a = window.event.srcElement
            a && (a.readyState == 'loaded' || a.readyState == 'complete') && a.parentNode.removeChild(a)
        })
        setTimeout(function () {
            document.getElementsByTagName('head')[0].appendChild(e)
            e = s
        }, 1)
    }
    ;var Tb = {
        map: 'i5s0dw',
        common: 'jrzmva',
        style: 'mqdswt',
        tile: 'wetykw',
        groundoverlay: 'zel1ht',
        pointcollection: '52rldj',
        marker: '15ipzq',
        symbol: 'bxzn24',
        canvablepath: 'yjpor5',
        vmlcontext: '41oars',
        markeranimation: 'q1bipf',
        poly: '3zcxhi',
        draw: 'fkup43',
        drawbysvg: 'ijy5nj',
        drawbyvml: 'aoibi5',
        drawbycanvas: 'aewn4o',
        infowindow: 'anxyp0',
        oppc: 'upzuz4',
        opmb: '3awlxd',
        menu: 'szrz5h',
        control: 'j4hynd',
        navictrl: '4m4vf2',
        geoctrl: 'qesj1s',
        copyrightctrl: 'nafalt',
        citylistcontrol: 'ppkbbr',
        scommon: 'wwss1q',
        local: 'hptci0',
        route: '5f530m',
        othersearch: 'ocjwbo',
        mapclick: 'xh0ipo',
        buslinesearch: 'cvs3i2',
        hotspot: 'r1fl3s',
        autocomplete: 'smbpgf',
        coordtrans: 'dl5jov',
        coordtransutils: '4gcmt1',
        convertor: 'p2frek',
        clayer: 'omtot3',
        pservice: '4cfn3c',
        pcommon: 'f13wqp',
        panorama: 'pothz4',
        panoramaflash: '3lrn0o'
    }
    z.Zx = (function () {
        function a (a) {
            return e && !!c[b + a + '_' + Tb[a]]
        }
        var b = 'BMap_'
           var c = window.localStorage
           var e = 'localStorage' in window && c !== s && c !== l
        return {
            UX: e,
            set: function (a, g) {
                if (e) {
                    for (var i = b + a + '_', k = c.length, m; k--;) {
 m = c.key(k),
                        m.indexOf(i) > -1 && c.removeItem(m)
}
                    try {
                        c.setItem(b + a + '_' + Tb[a], g)
                    } catch (n) {
                        c.clear()
                    }
                }
            },
            get: function (f) {
                return e && a(f) ? c.getItem(b + f + '_' + Tb[f]) : t
            },
            iJ: a
        }
    }())
    function K () {}
    z.object.extend(K, {
        tj: {
            BF: -1,
            RO: 0,
            Bp: 1
        },
        pK: function () {
            var a = 'canvablepath'
            if (!I() || !Ob()) { Nb() || (Mb() ? a = 'vmlcontext' : Ob()) }
            return {
                tile: ['style'],
                control: [],
                marker: ['symbol'],
                symbol: ['canvablepath', 'common'],
                canvablepath: a === 'canvablepath' ? [] : [a],
                vmlcontext: [],
                style: [],
                poly: ['marker', 'drawbycanvas', 'drawbysvg', 'drawbyvml'],
                drawbysvg: ['draw'],
                drawbyvml: ['draw'],
                drawbycanvas: ['draw'],
                infowindow: ['common', 'marker'],
                menu: [],
                oppc: [],
                opmb: [],
                scommon: [],
                local: ['scommon'],
                route: ['scommon'],
                othersearch: ['scommon'],
                autocomplete: ['scommon'],
                citylistcontrol: ['autocomplete'],
                mapclick: ['scommon'],
                buslinesearch: ['route'],
                hotspot: [],
                coordtransutils: ['coordtrans'],
                convertor: [],
                clayer: ['tile'],
                pservice: [],
                pcommon: ['style', 'pservice'],
                panorama: ['pcommon'],
                panoramaflash: ['pcommon']
            }
        },
        n4: {},
        tF: {
            $O: D.oa + 'getmodules?v=3.0',
            wT: 5E3
        },
        OB: t,
        Pd: {
            il: {},
            Wm: [],
            qv: []
        },
        load: function (a, b, c) {
            var e = this.lb(a)
            if (e.Ke == this.tj.Bp) { c && b() } else {
                if (e.Ke == this.tj.BF) {
                    this.nJ(a)
                    this.EM(a)
                    var f = this
                    f.OB == t && (f.OB = p,
                    setTimeout(function () {
                        for (var a = [], b = 0, c = f.Pd.Wm.length; b < c; b++) {
                            var e = f.Pd.Wm[b]
                               var n = ''
                            ja.Zx.iJ(e) ? n = ja.Zx.get(e) : (n = '',
                            a.push(e + '_' + Tb[e]))
                            f.Pd.qv.push({
                                VL: e,
                                UD: n
                            })
                        }
                        f.OB = t
                        f.Pd.Wm.length = 0
                        // 0 == a.length ? f.XJ() : pa(f.tF.$O + "&mod=" + a.join(","))
                        a.length == 0 ? f.XJ() : pa('./js/getModules.js')
                    }, 1))
                    e.Ke = this.tj.RO
                }
                e.nu.push(b)
            }
        },
        nJ: function (a) {
            if (a && this.pK()[a]) {
 for (var a = this.pK()[a], b = 0; b < a.length; b++) {
 this.nJ(a[b]),
                    this.Pd.il[a[b]] || this.EM(a[b])
}
}
        },
        EM: function (a) {
            for (var b = 0; b < this.Pd.Wm.length; b++) {
 if (this.Pd.Wm[b] == a) { return }
}
            this.Pd.Wm.push(a)
        },
        jZ: function (a, b) {
            var c = this.lb(a)
            try {
                eval(b)
            } catch (e) {
                return
            }
            c.Ke = this.tj.Bp
            for (var f = 0, g = c.nu.length; f < g; f++) { c.nu[f]() }
            c.nu.length = 0
        },
        iJ: function (a, b) {
            var c = this
            c.timeout = setTimeout(function () {
                c.Pd.il[a].Ke != c.tj.Bp ? (c.remove(a),
                c.load(a, b)) : clearTimeout(c.timeout)
            }, c.tF.wT)
        },
        lb: function (a) {
            this.Pd.il[a] || (this.Pd.il[a] = {},
            this.Pd.il[a].Ke = this.tj.BF,
            this.Pd.il[a].nu = [])
            return this.Pd.il[a]
        },
        remove: function (a) {
            delete this.lb(a)
        },
        wU: function (a, b) {
            for (var c = this.Pd.qv, e = p, f = 0, g = c.length; f < g; f++) { c[f].UD == '' && (c[f].VL == a ? c[f].UD = b : e = t) }
            e && this.XJ()
        },
        XJ: function () {
            for (var a = this.Pd.qv, b = 0, c = a.length; b < c; b++) { this.jZ(a[b].VL, a[b].UD) }
            this.Pd.qv.length = 0
        }
    })
    function R (a, b) {
        this.x = a || 0
        this.y = b || 0
        this.x = this.x
        this.y = this.y
    }
    R.prototype.oc = function (a) {
        return a && a.x == this.x && a.y == this.y
    }

    function P (a, b) {
        this.width = a || 0
        this.height = b || 0
    }
    P.prototype.oc = function (a) {
        return a && this.width == a.width && this.height == a.height
    }

    function kb (a, b) {
        a && (this.Lb = a,
        this.ea = 'spot' + kb.ea++,
        b = b || {},
        this.Pg = b.text || '',
        this.Wu = b.offsets ? b.offsets.slice(0) : [5, 5, 5, 5],
        this.YA = b.userData || s,
        this.Ch = b.minZoom || s,
        this.Cf = b.maxZoom || s)
    }
    kb.ea = 0
    z.extend(kb.prototype, {
        xa: function (a) {
            this.Ch == s && (this.Ch = a.U.gc)
            this.Cf == s && (this.Cf = a.U.pc)
        },
        ua: function (a) {
            a instanceof J && (this.Lb = a)
        },
        ja: x('Lb'),
        ut: ca('Pg'),
        eD: x('Pg'),
        setUserData: ca('YA'),
        getUserData: x('YA')
    })
    function Ub () {
        this.M = s
        this.Mb = 'control'
        this.Sa = this.bJ = p
    }
    z.lang.wa(Ub, z.lang.Ga, 'Control')
    z.extend(Ub.prototype, {
        initialize: function (a) {
            this.M = a
            if (this.P) {
 return a.Ya.appendChild(this.P),
                this.P
}
        },
        Fe: function (a) {
            !this.P && (this.initialize && $a(this.initialize)) && (this.P = this.initialize(a))
            this.m = this.m || {
                vg: t
            }
            this.MA()
            this.fr()
            this.P && (this.P.Eq = this)
        },
        MA: function () {
            var a = this.P
            if (a) {
                var b = a.style
                b.position = 'absolute'
                b.zIndex = this.Hy || '10'
                b.MozUserSelect = 'none'
                b.WebkitTextSizeAdjust = 'none'
                this.m.vg || z.R.eb(a, 'BMap_noprint')
                I() || z.V(a, 'contextmenu', oa)
            }
        },
        remove: function () {
            this.M = s
            this.P && (this.P.parentNode && this.P.parentNode.removeChild(this.P),
            this.P = this.P.Eq = s)
        },
        Ea: function () {
            this.P = Bb(this.M.Ya, "<div unselectable='on'></div>")
            this.Sa == t && z.R.aa(this.P)
            return this.P
        },
        fr: function () {
            this.uc(this.m.anchor)
        },
        uc: function (a) {
            if (this.p1 || !Za(a) || isNaN(a) || a < Wb || a > 3) { a = this.defaultAnchor }
            this.m = this.m || {
                vg: t
            }
            this.m.Da = this.m.Da || this.defaultOffset
            var b = this.m.anchor
            this.m.anchor = a
            if (this.P) {
                var c = this.P
                   var e = this.m.Da.width
                   var f = this.m.Da.height
                c.style.left = c.style.top = c.style.right = c.style.bottom = 'auto'
                switch (a) {
                case Wb:
                    c.style.top = f + 'px'
                    c.style.left = e + 'px'
                    break
                case Xb:
                    c.style.top = f + 'px'
                    c.style.right = e + 'px'
                    break
                case Yb:
                    c.style.bottom = f + 'px'
                    c.style.left = e + 'px'
                    break
                case 3:
                    c.style.bottom = f + 'px',
                    c.style.right = e + 'px'
                }
                c = ['TL', 'TR', 'BL', 'BR']
                z.R.tc(this.P, 'anchor' + c[b])
                z.R.eb(this.P, 'anchor' + c[a])
            }
        },
        HC: function () {
            return this.m.anchor
        },
        getContainer: x('P'),
        ie: function (a) {
            a instanceof P && (this.m = this.m || {
                vg: t
            },
            this.m.Da = new P(a.width, a.height),
            this.P && this.uc(this.m.anchor))
        },
        cj: function () {
            return this.m.Da
        },
        Zc: x('P'),
        show: function () {
            this.Sa != p && (this.Sa = p,
            this.P && z.R.show(this.P))
        },
        aa: function () {
            this.Sa != t && (this.Sa = t,
            this.P && z.R.aa(this.P))
        },
        isPrintable: function () {
            return !!this.m.vg
        },
        Nc: function () {
            return !this.P && !this.M ? t : !!this.Sa
        }
    })
    var Wb = 0
       var Xb = 1
       var Yb = 2
    function lb (a) {
        Ub.call(this)
        a = a || {}
        this.m = {
            vg: t,
            FE: a.showZoomInfo || p,
            anchor: a.anchor,
            Da: a.offset,
            type: a.type,
            KV: a.enableGeolocation || t
        }
        this.defaultAnchor = I() ? 3 : Wb
        this.defaultOffset = new P(10, 10)
        this.uc(a.anchor)
        this.Gm(a.type)
        this.uf()
    }
    z.lang.wa(lb, Ub, 'NavigationControl')
    z.extend(lb.prototype, {
        initialize: function (a) {
            this.M = a
            return this.P
        },
        Gm: function (a) {
            this.m.type = Za(a) && a >= 0 && a <= 3 ? a : 0
        },
        Ko: function () {
            return this.m.type
        },
        uf: function () {
            var a = this
            K.load('navictrl', function () {
                a.tf()
            })
        }
    })
    function Zb (a) {
        Ub.call(this)
        a = a || {}
        this.m = {
            anchor: a.anchor || Yb,
            Da: a.offset || new P(10, 30),
            TZ: a.showAddressBar !== t,
            X1: a.enableAutoLocation || t,
            NL: a.locationIcon || s
        }
        var b = this
        this.Hy = 1200
        b.L_ = []
        this.ne = []
        K.load('geoctrl', function () {
            (function e () {
                if (b.ne.length !== 0) {
                    var a = b.ne.shift()
                    b[a.method].apply(b, a.arguments)
                    e()
                }
            }
            )()
            b.ZO()
        })
        Ta(Ma)
    }
    z.lang.wa(Zb, Ub, 'GeolocationControl')
    z.extend(Zb.prototype, {
        location: function () {
            this.ne.push({
                method: 'location',
                arguments: arguments
            })
        },
        getAddressComponent: ea(s)
    })
    function $b (a) {
        Ub.call(this)
        a = a || {}
        this.m = {
            vg: t,
            anchor: a.anchor,
            Da: a.offset
        }
        this.bc = []
        this.defaultAnchor = Yb
        this.defaultOffset = new P(5, 2)
        this.uc(a.anchor)
        this.bJ = t
        this.uf()
    }
    z.lang.wa($b, Ub, 'CopyrightControl')
    z.object.extend($b.prototype, {
        initialize: function (a) {
            this.M = a
            return this.P
        },
        Nv: function (a) {
            if (a && Za(a.id) && !isNaN(a.id)) {
                var b = {
                    bounds: s,
                    content: ''
                }; var c
                for (c in a) { b[c] = a[c] }
                if (a = this.Wl(a.id)) {
 for (var e in b) { a[e] = b[e] }
} else { this.bc.push(b) }
            }
        },
        Wl: function (a) {
            for (var b = 0, c = this.bc.length; b < c; b++) {
 if (this.bc[b].id == a) { return this.bc[b] }
}
        },
        OC: x('bc'),
        hE: function (a) {
            for (var b = 0, c = this.bc.length; b < c; b++) {
 this.bc[b].id == a && (r = this.bc.splice(b, 1),
                b--,
                c = this.bc.length)
}
        },
        uf: function () {
            var a = this
            K.load('copyrightctrl', function () {
                a.tf()
            })
        }
    })
    function nb (a) {
        Ub.call(this)
        a = a || {}
        this.m = {
            vg: t,
            size: a.size || new P(150, 150),
            padding: 5,
            Za: a.isOpen === p ? p : t,
            c0: 4,
            Da: a.offset,
            anchor: a.anchor
        }
        this.defaultAnchor = 3
        this.defaultOffset = new P(0, 0)
        this.Vp = this.Wp = 13
        this.uc(a.anchor)
        this.Ae(this.m.size)
        this.uf()
    }
    z.lang.wa(nb, Ub, 'OverviewMapControl')
    z.extend(nb.prototype, {
        initialize: function (a) {
            this.M = a
            return this.P
        },
        uc: function (a) {
            Ub.prototype.uc.call(this, a)
        },
        qe: function () {
            this.qe.Hn = p
            this.m.Za = !this.m.Za
            this.P || (this.qe.Hn = t)
        },
        Ae: function (a) {
            a instanceof P || (a = new P(150, 150))
            a.width = a.width > 0 ? a.width : 150
            a.height = a.height > 0 ? a.height : 150
            this.m.size = a
        },
        Hb: function () {
            return this.m.size
        },
        Za: function () {
            return this.m.Za
        },
        uf: function () {
            var a = this
            K.load('control', function () {
                a.tf()
            })
        }
    })
    function ac (a) {
        Ub.call(this)
        a = a || {}
        this.defaultAnchor = Wb
        this.uU = a.canCheckSize === t ? t : p
        this.Ti = ''
        this.defaultOffset = new P(10, 10)
        this.onChangeBefore = []
        this.onChangeAfter = []
        this.onChangeSuccess = []
        this.m = {
            vg: t,
            Da: a.offset || this.defaultOffset,
            anchor: a.anchor || this.defaultAnchor,
            expand: !!a.expand
        }
        a.onChangeBefore && $a(a.onChangeBefore) && this.onChangeBefore.push(a.onChangeBefore)
        a.onChangeAfter && $a(a.onChangeAfter) && this.onChangeAfter.push(a.onChangeAfter)
        a.onChangeSuccess && $a(a.onChangeSuccess) && this.onChangeSuccess.push(a.onChangeSuccess)
        this.uc(a.anchor)
        this.uf()
    }
    z.lang.wa(ac, Ub, 'CityListControl')
    z.object.extend(ac.prototype, {
        initialize: function (a) {
            this.M = a
            return this.P
        },
        uf: function () {
            var a = this
            K.load('citylistcontrol', function () {
                a.tf()
            }, p)
        }
    })
    function mb (a) {
        Ub.call(this)
        a = a || {}
        this.m = {
            vg: t,
            color: 'black',
            ed: 'metric',
            Da: a.offset
        }
        this.defaultAnchor = Yb
        this.defaultOffset = new P(81, 18)
        this.uc(a.anchor)
        this.Kh = {
            metric: {
                name: 'metric',
                pJ: 1,
                dL: 1E3,
                ON: '\u7c73',
                PN: '\u516c\u91cc'
            },
            us: {
                name: 'us',
                pJ: 3.2808,
                dL: 5280,
                ON: '\u82f1\u5c3a',
                PN: '\u82f1\u91cc'
            }
        }
        this.Kh[this.m.ed] || (this.m.ed = 'metric')
        this.WH = s
        this.vH = {}
        this.uf()
    }
    z.lang.wa(mb, Ub, 'ScaleControl')
    z.object.extend(mb.prototype, {
        initialize: function (a) {
            this.M = a
            return this.P
        },
        Ak: function (a) {
            this.m.color = a + ''
        },
        t2: function () {
            return this.m.color
        },
        BE: function (a) {
            this.m.ed = this.Kh[a] && this.Kh[a].name || this.m.ed
        },
        gX: function () {
            return this.m.ed
        },
        uf: function () {
            var a = this
            K.load('control', function () {
                a.tf()
            })
        }
    })
    var bc = 0
    function ob (a) {
        Ub.call(this)
        a = a || {}
        this.defaultAnchor = Xb
        this.defaultOffset = new P(10, 10)
        this.m = {
            vg: t,
            dh: [Pa, ab, Va, Sa],
            eV: ['B_DIMENSIONAL_MAP', 'B_SATELLITE_MAP', 'B_NORMAL_MAP'],
            type: a.type || bc,
            Da: a.offset || this.defaultOffset,
            OV: p
        }
        this.uc(a.anchor)
        Object.prototype.toString.call(a.mapTypes) == '[object Array]' && (this.m.dh = a.mapTypes.slice(0))
        this.uf()
    }
    z.lang.wa(ob, Ub, 'MapTypeControl')
    z.object.extend(ob.prototype, {
        initialize: function (a) {
            this.M = a
            return this.P
        },
        $x: function (a) {
            this.M.xn = a
        },
        uf: function () {
            var a = this
            K.load('control', function () {
                a.tf()
            }, p)
        }
    })
    function cc (a) {
        Ub.call(this)
        a = a || {}
        this.m = {
            vg: t,
            Da: a.offset,
            anchor: a.anchor
        }
        this.Gi = t
        this.uv = s
        this.EH = new dc({
            hf: 'api'
        })
        this.FH = new ec(s, {
            hf: 'api'
        })
        this.defaultAnchor = Xb
        this.defaultOffset = new P(10, 10)
        this.uc(a.anchor)
        this.uf()
        Ta(xa)
    }
    z.lang.wa(cc, Ub, 'PanoramaControl')
    z.extend(cc.prototype, {
        initialize: function (a) {
            this.M = a
            return this.P
        },
        uf: function () {
            var a = this
            K.load('control', function () {
                a.tf()
            })
        }
    })
    function fc (a) {
        z.lang.Ga.call(this)
        this.m = {
            Ya: s,
            cursor: 'default'
        }
        this.m = z.extend(this.m, a)
        this.Mb = 'contextmenu'
        this.M = s
        this.Aa = []
        this.Ef = []
        this.De = []
        this.nw = this.Er = s
        this.Bh = t
        var b = this
        K.load('menu', function () {
            b.jb()
        })
    }
    z.lang.wa(fc, z.lang.Ga, 'ContextMenu')
    z.object.extend(fc.prototype, {
        xa: function (a, b) {
            this.M = a
            this.nl = b || s
        },
        remove: function () {
            this.M = this.nl = s
        },
        Ov: function (a) {
            if (a && !(a.Mb != 'menuitem' || a.Pg == '' || a.Oi <= 0)) {
                for (var b = 0, c = this.Aa.length; b < c; b++) {
 if (this.Aa[b] === a) { return }
}
                this.Aa.push(a)
                this.Ef.push(a)
            }
        },
        removeItem: function (a) {
            if (a && a.Mb == 'menuitem') {
                for (var b = 0, c = this.Aa.length; b < c; b++) {
 this.Aa[b] === a && (this.Aa[b].remove(),
                    this.Aa.splice(b, 1),
                    c--)
}
                b = 0
                for (c = this.Ef.length; b < c; b++) {
 this.Ef[b] === a && (this.Ef[b].remove(),
                    this.Ef.splice(b, 1),
                    c--)
}
            }
        },
        hB: function () {
            this.Aa.push({
                Mb: 'divider',
                Aj: this.De.length
            })
            this.De.push({
                R: s
            })
        },
        jE: function (a) {
            if (this.De[a]) {
                for (var b = 0, c = this.Aa.length; b < c; b++) {
 this.Aa[b] && (this.Aa[b].Mb == 'divider' && this.Aa[b].Aj == a) && (this.Aa.splice(b, 1),
                    c--),
                    this.Aa[b] && (this.Aa[b].Mb == 'divider' && this.Aa[b].Aj > a) && this.Aa[b].Aj--
}
                this.De.splice(a, 1)
            }
        },
        Zc: x('P'),
        show: function () {
            this.Bh != p && (this.Bh = p)
        },
        aa: function () {
            this.Bh != t && (this.Bh = t)
        },
        yZ: function (a) {
            a && (this.m.cursor = a)
        },
        getItem: function (a) {
            return this.Ef[a]
        }
    })
    var gc = H.sa + 'menu_zoom_in.png'
       var hc = H.sa + 'menu_zoom_out.png'
    function ic (a, b, c) {
        if (a && $a(b)) {
            z.lang.Ga.call(this)
            this.m = {
                width: 100,
                id: '',
                fm: ''
            }
            c = c || {}
            this.m.width = 1 * c.width ? c.width : 100
            this.m.id = c.id ? c.id : ''
            this.m.fm = c.iconUrl ? c.iconUrl : ''
            this.Pg = a + ''
            this.Ky = b
            this.M = s
            this.Mb = 'menuitem'
            this.mr = this.Lu = this.P = this.wh = s
            this.zh = p
            var e = this
            K.load('menu', function () {
                e.jb()
            })
        }
    }
    z.lang.wa(ic, z.lang.Ga, 'MenuItem')
    z.object.extend(ic.prototype, {
        xa: function (a, b) {
            this.M = a
            this.wh = b
        },
        remove: function () {
            this.M = this.wh = s
        },
        ut: function (a) {
            a && (this.Pg = a + '')
        },
        Tb: function (a) {
            a && (this.m.fm = a)
        },
        Zc: x('P'),
        enable: function () {
            this.zh = p
        },
        disable: function () {
            this.zh = t
        }
    })
    function hb (a, b) {
        a && !b && (b = a)
        this.Ge = this.Vd = this.Le = this.Xd = this.Al = this.ll = s
        a && (this.Al = new J(a.lng, a.lat),
        this.ll = new J(b.lng, b.lat),
        this.Le = a.lng,
        this.Xd = a.lat,
        this.Ge = b.lng,
        this.Vd = b.lat)
    }
    z.object.extend(hb.prototype, {
        lj: function () {
            return !this.Al || !this.ll
        },
        oc: function (a) {
            return !(a instanceof hb) || this.lj() ? t : this.Se().oc(a.Se()) && this.Lf().oc(a.Lf())
        },
        Se: x('Al'),
        Lf: x('ll'),
        LU: function (a) {
            return !(a instanceof hb) || this.lj() || a.lj() ? t : a.Le > this.Le && a.Ge < this.Ge && a.Xd > this.Xd && a.Vd < this.Vd
        },
        Bb: function () {
            return this.lj() ? s : new J((this.Le + this.Ge) / 2, (this.Xd + this.Vd) / 2)
        },
        Ds: function (a) {
            if (!(a instanceof hb) || Math.max(a.Le, a.Ge) < Math.min(this.Le, this.Ge) || Math.min(a.Le, a.Ge) > Math.max(this.Le, this.Ge) || Math.max(a.Xd, a.Vd) < Math.min(this.Xd, this.Vd) || Math.min(a.Xd, a.Vd) > Math.max(this.Xd, this.Vd)) { return s }
            var b = Math.max(this.Le, a.Le)
               var c = Math.min(this.Ge, a.Ge)
               var e = Math.max(this.Xd, a.Xd)
               var a = Math.min(this.Vd, a.Vd)
            return new hb(new J(b, e), new J(c, a))
        },
        Ar: function (a) {
            return !(a instanceof J) || this.lj() ? t : a.lng >= this.Le && a.lng <= this.Ge && a.lat >= this.Xd && a.lat <= this.Vd
        },
        extend: function (a) {
            if (a instanceof J) {
                var b = a.lng
                   var a = a.lat
                this.Al || (this.Al = new J(0, 0))
                this.ll || (this.ll = new J(0, 0))
                if (!this.Le || this.Le > b) { this.Al.lng = this.Le = b }
                if (!this.Ge || this.Ge < b) { this.ll.lng = this.Ge = b }
                if (!this.Xd || this.Xd > a) { this.Al.lat = this.Xd = a }
                if (!this.Vd || this.Vd < a) { this.ll.lat = this.Vd = a }
            }
        },
        TE: function () {
            return this.lj() ? new J(0, 0) : new J(Math.abs(this.Ge - this.Le), Math.abs(this.Vd - this.Xd))
        }
    })
    function J (a, b) {
        isNaN(a) && (a = Lb(a),
        a = isNaN(a) ? 0 : a)
        bb(a) && (a = parseFloat(a))
        isNaN(b) && (b = Lb(b),
        b = isNaN(b) ? 0 : b)
        bb(b) && (b = parseFloat(b))
        this.lng = a
        this.lat = b
    }
    J.iL = function (a) {
        return a && a.lng <= 180 && a.lng >= -180 && a.lat <= 74 && a.lat >= -74
    }

    J.prototype.oc = function (a) {
        return a && this.lat == a.lat && this.lng == a.lng
    }

    function jc () {}
    jc.prototype.qg = function () {
        aa('lngLatToPoint\u65b9\u6cd5\u672a\u5b9e\u73b0')
    }

    jc.prototype.oj = function () {
        aa('pointToLngLat\u65b9\u6cd5\u672a\u5b9e\u73b0')
    }

    function kc () {}
    ;var gb = {
        rJ: function (a, b, c) {
            K.load('coordtransutils', function () {
                gb.XT(a, b, c)
            }, p)
        },
        qJ: function (a, b, c) {
            K.load('coordtransutils', function () {
                gb.WT(a, b, c)
            }, p)
        }
    }
    function lc () {
        this.Ra = []
        var a = this
        K.load('convertor', function () {
            a.XO()
        })
    }
    z.wa(lc, z.lang.Ga, 'Convertor')
    z.extend(lc.prototype, {
        translate: function (a, b, c, e) {
            this.Ra.push({
                method: 'translate',
                arguments: [a, b, c, e]
            })
        }
    })
    U(lc.prototype, {
        translate: lc.prototype.translate
    })
    function S () {}
    S.prototype = new jc()
    z.extend(S, {
        uO: 6370996.81,
        FF: [1.289059486E7, 8362377.87, 5591021, 3481989.83, 1678043.12, 0],
        cu: [86, 60, 45, 30, 15, 0],
        AO: [[1.410526172116255E-8, 8.98305509648872E-6, -1.9939833816331, 200.9824383106796, -187.2403703815547, 91.6087516669843, -23.38765649603339, 2.57121317296198, -0.03801003308653, 1.73379812E7], [-7.435856389565537E-9, 8.983055097726239E-6, -0.78625201886289, 96.32687599759846, -1.85204757529826, -59.36935905485877, 47.40033549296737, -16.50741931063887, 2.28786674699375, 1.026014486E7], [-3.030883460898826E-8, 8.98305509983578E-6, 0.30071316287616, 59.74293618442277, 7.357984074871, -25.38371002664745, 13.45380521110908, -3.29883767235584, 0.32710905363475, 6856817.37], [-1.981981304930552E-8, 8.983055099779535E-6, 0.03278182852591, 40.31678527705744, 0.65659298677277, -4.44255534477492, 0.85341911805263, 0.12923347998204, -0.04625736007561, 4482777.06], [3.09191371068437E-9, 8.983055096812155E-6, 6.995724062E-5, 23.10934304144901, -2.3663490511E-4, -0.6321817810242, -0.00663494467273, 0.03430082397953, -0.00466043876332, 2555164.4], [2.890871144776878E-9, 8.983055095805407E-6, -3.068298E-8, 7.47137025468032, -3.53937994E-6, -0.02145144861037, -1.234426596E-5, 1.0322952773E-4, -3.23890364E-6, 826088.5]],
        CF: [[-0.0015702102444, 111320.7020616939, 1704480524535203, -10338987376042340, 26112667856603880, -35149669176653700, 26595700718403920, -10725012454188240, 1800819912950474, 82.5], [8.277824516172526E-4, 111320.7020463578, 6.477955746671607E8, -4.082003173641316E9, 1.077490566351142E10, -1.517187553151559E10, 1.205306533862167E10, -5.124939663577472E9, 9.133119359512032E8, 67.5], [0.00337398766765, 111320.7020202162, 4481351.045890365, -2.339375119931662E7, 7.968221547186455E7, -1.159649932797253E8, 9.723671115602145E7, -4.366194633752821E7, 8477230.501135234, 52.5], [0.00220636496208, 111320.7020209128, 51751.86112841131, 3796837.749470245, 992013.7397791013, -1221952.21711287, 1340652.697009075, -620943.6990984312, 144416.9293806241, 37.5], [-3.441963504368392E-4, 111320.7020576856, 278.2353980772752, 2485758.690035394, 6070.750963243378, 54821.18345352118, 9540.606633304236, -2710.55326746645, 1405.483844121726, 22.5], [-3.218135878613132E-4, 111320.7020701615, 0.00369383431289, 823725.6402795718, 0.46104986909093, 2351.343141331292, 1.58060784298199, 8.77738589078284, 0.37238884252424, 7.45]],
        z2: function (a, b) {
            if (!a || !b) { return 0 }
            var c; var e; var a = this.cc(a)
            if (!a) { return 0 }
            c = this.Jk(a.lng)
            e = this.Jk(a.lat)
            b = this.cc(b)
            return !b ? 0 : this.jf(c, this.Jk(b.lng), e, this.Jk(b.lat))
        },
        Co: function (a, b) {
            if (!a || !b) { return 0 }
            a.lng = this.VC(a.lng, -180, 180)
            a.lat = this.aD(a.lat, -74, 74)
            b.lng = this.VC(b.lng, -180, 180)
            b.lat = this.aD(b.lat, -74, 74)
            return this.jf(this.Jk(a.lng), this.Jk(b.lng), this.Jk(a.lat), this.Jk(b.lat))
        },
        cc: function (a) {
            if (a === s || a === l) { return new J(0, 0) }
            var b, c
            b = new J(Math.abs(a.lng), Math.abs(a.lat))
            for (var e = 0; e < this.FF.length; e++) {
 if (b.lat >= this.FF[e]) {
                    c = this.AO[e]
                    break
                }
}
            a = this.sJ(a, c)
            return a = new J(a.lng, a.lat)
        },
        Gb: function (a) {
            if (a === s || a === l || a.lng > 180 || a.lng < -180 || a.lat > 90 || a.lat < -90) { return new J(0, 0) }
            var b, c
            a.lng = this.VC(a.lng, -180, 180)
            a.lat = this.aD(a.lat, -85, 85)
            b = new J(a.lng, a.lat)
            for (var e = 0; e < this.cu.length; e++) {
 if (b.lat >= this.cu[e]) {
                    c = this.CF[e]
                    break
                }
}
            if (!c) {
 for (e = 0; e < this.cu.length; e++) {
 if (b.lat <= -this.cu[e]) {
                        c = this.CF[e]
                        break
                    }
}
}
            a = this.sJ(a, c)
            return a = new J(a.lng, a.lat)
        },
        sJ: function (a, b) {
            if (a && b) {
                var c = b[0] + b[1] * Math.abs(a.lng)
                   var e = Math.abs(a.lat) / b[9]
                   var e = b[2] + b[3] * e + b[4] * e * e + b[5] * e * e * e + b[6] * e * e * e * e + b[7] * e * e * e * e * e + b[8] * e * e * e * e * e * e
                   var c = c * (a.lng < 0 ? -1 : 1)
                   var e = e * (a.lat < 0 ? -1 : 1)
                return new J(c, e)
            }
        },
        jf: function (a, b, c, e) {
            return this.uO * Math.acos(Math.sin(c) * Math.sin(e) + Math.cos(c) * Math.cos(e) * Math.cos(b - a))
        },
        Jk: function (a) {
            return Math.PI * a / 180
        },
        W4: function (a) {
            return 180 * a / Math.PI
        },
        aD: function (a, b, c) {
            b != s && (a = Math.max(a, b))
            c != s && (a = Math.min(a, c))
            return a
        },
        VC: function (a, b, c) {
            for (; a > c;) { a -= c - b }
            for (; a < b;) { a += c - b }
            return a
        }
    })
    z.extend(S.prototype, {
        bi: function (a) {
            return S.Gb(a)
        },
        qg: function (a) {
            a = S.Gb(a)
            return new R(a.lng, a.lat)
        },
        eh: function (a) {
            return S.cc(a)
        },
        oj: function (a) {
            a = new J(a.x, a.y)
            return S.cc(a)
        },
        Rb: function (a, b, c, e, f) {
            if (a) {
 return a = this.bi(a, f),
                b = this.dc(b),
                new R(Math.round((a.lng - c.lng) / b + e.width / 2), Math.round((c.lat - a.lat) / b + e.height / 2))
}
        },
        Ib: function (a, b, c, e, f) {
            if (a) {
 return b = this.dc(b),
                this.eh(new J(c.lng + b * (a.x - e.width / 2), c.lat - b * (a.y - e.height / 2)), f)
}
        },
        dc: function (a) {
            return Math.pow(2, 18 - a)
        }
    })
    function jb () {
        this.Ti = 'bj'
    }
    jb.prototype = new S()
    z.extend(jb.prototype, {
        bi: function (a, b) {
            return this.IP(b, S.Gb(a))
        },
        eh: function (a, b) {
            return S.cc(this.JP(b, a))
        },
        lngLatToPointFor3D: function (a, b) {
            var c = this
               var e = S.Gb(a)
            K.load('coordtrans', function () {
                var a = kc.ZC(c.Ti || 'bj', e)
                   var a = new R(a.x, a.y)
                b && b(a)
            }, p)
        },
        pointToLngLatFor3D: function (a, b) {
            var c = this
               var e = new J(a.x, a.y)
            K.load('coordtrans', function () {
                var a = kc.WC(c.Ti || 'bj', e)
                   var a = new J(a.lng, a.lat)
                   var a = S.cc(a)
                b && b(a)
            }, p)
        },
        IP: function (a, b) {
            if (K.lb('coordtrans').Ke == K.tj.Bp) {
                var c = kc.ZC(a || 'bj', b)
                return new J(c.x, c.y)
            }
            K.load('coordtrans', u())
            return new J(0, 0)
        },
        JP: function (a, b) {
            if (K.lb('coordtrans').Ke == K.tj.Bp) {
                var c = kc.WC(a || 'bj', b)
                return new J(c.lng, c.lat)
            }
            K.load('coordtrans', u())
            return new J(0, 0)
        },
        dc: function (a) {
            return Math.pow(2, 20 - a)
        }
    })
    function mc () {
        this.Mb = 'overlay'
    }
    z.lang.wa(mc, z.lang.Ga, 'Overlay')
    mc.pk = function (a) {
        a *= 1
        return !a ? 0 : -1E5 * a << 1
    }

    z.extend(mc.prototype, {
        Fe: function (a) {
            if (!this.ba && $a(this.initialize) && (this.ba = this.initialize(a))) { this.ba.style.WebkitUserSelect = 'none' }
            this.draw()
        },
        initialize: function () {
            aa('initialize\u65b9\u6cd5\u672a\u5b9e\u73b0')
        },
        draw: function () {
            aa('draw\u65b9\u6cd5\u672a\u5b9e\u73b0')
        },
        remove: function () {
            this.ba && this.ba.parentNode && this.ba.parentNode.removeChild(this.ba)
            this.ba = s
            this.dispatchEvent(new Q('onremove'))
        },
        aa: function () {
            this.ba && z.R.aa(this.ba)
        },
        show: function () {
            this.ba && z.R.show(this.ba)
        },
        Nc: function () {
            return !this.ba || this.ba.style.display == 'none' || this.ba.style.visibility == 'hidden' ? t : p
        }
    })
    D.We(function (a) {
        function b (a, b) {
            var c = O('div')
               var i = c.style
            i.position = 'absolute'
            i.top = i.left = i.width = i.height = '0'
            i.zIndex = b
            a.appendChild(c)
            return c
        }
        var c = a.$
        c.Oc = a.Oc = b(a.platform, 200)
        a.Wd.BC = b(c.Oc, 800)
        a.Wd.PD = b(c.Oc, 700)
        a.Wd.cK = b(c.Oc, 600)
        a.Wd.JD = b(c.Oc, 500)
        a.Wd.RL = b(c.Oc, 400)
        a.Wd.SL = b(c.Oc, 300)
        a.Wd.$N = b(c.Oc, 201)
        a.Wd.Ps = b(c.Oc, 200)
    })
    function ib () {
        z.lang.Ga.call(this)
        mc.call(this)
        this.map = s
        this.Sa = p
        this.Cb = s
        this.pG = 0
    }
    z.lang.wa(ib, mc, 'OverlayInternal')
    z.extend(ib.prototype, {
        initialize: function (a) {
            this.map = a
            z.lang.Ga.call(this, this.ea)
            return s
        },
        Iw: x('map'),
        draw: u(),
        uj: u(),
        remove: function () {
            this.map = s
            z.lang.rw(this.ea)
            mc.prototype.remove.call(this)
        },
        aa: function () {
            this.Sa !== t && (this.Sa = t)
        },
        show: function () {
            this.Sa !== p && (this.Sa = p)
        },
        Nc: function () {
            return !this.ba ? t : !!this.Sa
        },
        Ua: x('ba'),
        $M: function (a) {
            var a = a || {}; var b
            for (b in a) { this.K[b] = a[b] }
        },
        pp: ca('zIndex'),
        Yi: function () {
            this.K.Yi = p
        },
        nV: function () {
            this.K.Yi = t
        },
        Wn: ca('dg'),
        ap: function () {
            this.dg = s
        }
    })
    function nc () {
        this.map = s
        this.Ba = {}
        this.Ce = []
    }
    D.We(function (a) {
        var b = new nc()
        b.map = a
        a.Ba = b.Ba
        a.Ce = b.Ce
        a.addEventListener('load', function (a) {
            b.draw(a)
        })
        a.addEventListener('moveend', function (a) {
            b.draw(a)
        })
        z.ga.ma && z.ga.ma < 8 || document.compatMode === 'BackCompat' ? a.addEventListener('zoomend', function (a) {
            setTimeout(function () {
                b.draw(a)
            }, 20)
        }) : a.addEventListener('zoomend', function (a) {
            b.draw(a)
        })
        a.addEventListener('maptypechange', function (a) {
            b.draw(a)
        })
        a.addEventListener('addoverlay', function (a) {
            a = a.target
            if (a instanceof ib) { b.Ba[a.ea] || (b.Ba[a.ea] = a) } else {
                for (var e = t, f = 0, g = b.Ce.length; f < g; f++) {
 if (b.Ce[f] === a) {
                        e = p
                        break
                    }
}
                e || b.Ce.push(a)
            }
        })
        a.addEventListener('removeoverlay', function (a) {
            a = a.target
            if (a instanceof ib) { delete b.Ba[a.ea] } else {
 for (var e = 0, f = b.Ce.length; e < f; e++) {
 if (b.Ce[e] === a) {
                        b.Ce.splice(e, 1)
                        break
                    }
}
}
        })
        a.addEventListener('clearoverlays', function () {
            this.Xc()
            for (var a in b.Ba) {
 b.Ba[a].K.Yi && (b.Ba[a].remove(),
                delete b.Ba[a])
}
            a = 0
            for (var e = b.Ce.length; a < e; a++) {
 b.Ce[a].enableMassClear !== t && (b.Ce[a].remove(),
                b.Ce[a] = s,
                b.Ce.splice(a, 1),
                a--,
                e--)
}
        })
        a.addEventListener('infowindowopen', function () {
            var a = this.Cb
            a && (z.R.aa(a.zc),
            z.R.aa(a.Zb))
        })
        a.addEventListener('movestart', function () {
            this.$g() && this.$g().bI()
        })
        a.addEventListener('moveend', function () {
            this.$g() && this.$g().RH()
        })
    })
    nc.prototype.draw = function (a) {
        if (D.Ep) {
            var b = D.Ep.hs(this.map)
            b.Mb === 'canvas' && b.canvas && b.DP(b.canvas.getContext('2d'))
        }
        for (var c in this.Ba) { this.Ba[c].draw(a) }
        z.lc.Nb(this.Ce, function (a) {
            a.draw()
        })
        this.map.$.rb && this.map.$.rb.ua()
        D.Ep && b.zE()
    }

    function oc (a) {
        ib.call(this)
        a = a || {}
        this.K = {
            strokeColor: a.strokeColor || '#3a6bdb',
            qc: a.strokeWeight || 5,
            sd: a.strokeOpacity || 0.65,
            strokeStyle: a.strokeStyle || 'solid',
            Yi: a.enableMassClear === t ? t : p,
            lk: s,
            Zl: s,
            ff: a.enableEditing === p ? p : t,
            WL: 5,
            J_: t,
            cf: a.enableClicking === t ? t : p,
            $h: a.icons && a.icons.length > 0 ? a.icons : s
        }
        this.K.qc <= 0 && (this.K.qc = 5)
        if (this.K.sd < 0 || this.K.sd > 1) { this.K.sd = 0.65 }
        if (this.K.lg < 0 || this.K.lg > 1) { this.K.lg = 0.65 }
        this.K.strokeStyle != 'solid' && this.K.strokeStyle != 'dashed' && (this.K.strokeStyle = 'solid')
        this.ba = s
        this.ku = new hb(0, 0)
        this.af = []
        this.rc = []
        this.Ta = {}
    }
    z.lang.wa(oc, ib, 'Graph')
    oc.Fw = function (a) {
        var b = []
        if (!a) { return b }
        bb(a) && z.lc.Nb(a.split(';'), function (a) {
            a = a.split(',')
            b.push(new J(a[0], a[1]))
        })
        Object.prototype.toString.apply(a) == '[object Array]' && a.length > 0 && (b = a)
        return b
    }

    oc.ZD = [0.09, 0.0050, 1.0E-4, 1.0E-5]
    z.extend(oc.prototype, {
        initialize: function (a) {
            this.map = a
            return s
        },
        draw: u(),
        er: function (a) {
            this.af.length = 0
            this.na = oc.Fw(a).slice(0)
            this.th()
        },
        je: function (a) {
            this.er(a)
        },
        th: function () {
            if (this.na) {
                var a = this
                a.ku = new hb()
                z.lc.Nb(this.na, function (b) {
                    a.ku.extend(b)
                })
            }
        },
        Re: x('na'),
        Fm: function (a, b) {
            b && this.na[a] && (this.af.length = 0,
            this.na[a] = new J(b.lng, b.lat),
            this.th())
        },
        setStrokeColor: function (a) {
            this.K.strokeColor = a
        },
        ZW: function () {
            return this.K.strokeColor
        },
        op: function (a) {
            a > 0 && (this.K.qc = a)
        },
        FK: function () {
            return this.K.qc
        },
        mp: function (a) {
            a == l || (a > 1 || a < 0) || (this.K.sd = a)
        },
        $W: function () {
            return this.K.sd
        },
        it: function (a) {
            a > 1 || a < 0 || (this.K.lg = a)
        },
        tW: function () {
            return this.K.lg
        },
        np: function (a) {
            a != 'solid' && a != 'dashed' || (this.K.strokeStyle = a)
        },
        EK: function () {
            return this.K.strokeStyle
        },
        setFillColor: function (a) {
            this.K.fillColor = a || ''
        },
        sW: function () {
            return this.K.fillColor
        },
        te: x('ku'),
        remove: function () {
            this.map && this.map.removeEventListener('onmousemove', this.Iu)
            ib.prototype.remove.call(this)
            this.af.length = 0
        },
        ff: function () {
            if (!(this.na.length < 2)) {
                this.K.ff = p
                var a = this
                K.load('poly', function () {
                    a.Fl()
                }, p)
            }
        },
        mV: function () {
            this.K.ff = t
            var a = this
            K.load('poly', function () {
                a.$j()
            }, p)
        },
        pW: function () {
            return this.K.ff
        }
    })
    function pc (a) {
        ib.call(this)
        this.ba = this.map = s
        this.K = {
            width: 0,
            height: 0,
            Da: new P(0, 0),
            opacity: 1,
            background: 'transparent',
            kx: 1,
            DL: '#000',
            dY: 'solid',
            point: s
        }
        this.$M(a)
        this.point = this.K.point
    }
    z.lang.wa(pc, ib, 'Division')
    z.extend(pc.prototype, {
        uj: function () {
            var a = this.K
               var b = this.content
               var c = ['<div class="BMap_Division" style="position:absolute;']
            c.push('width:' + a.width + 'px;display:block;')
            c.push('overflow:hidden;')
            a.borderColor != 'none' && c.push('border:' + a.kx + 'px ' + a.dY + ' ' + a.DL + ';')
            c.push('opacity:' + a.opacity + '; filter:(opacity=' + 100 * a.opacity + ')')
            c.push('background:' + a.background + ';')
            c.push('z-index:60;">')
            c.push(b)
            c.push('</div>')
            this.ba = Bb(this.map.Mf().PD, c.join(''))
        },
        initialize: function (a) {
            this.map = a
            this.uj()
            this.ba && z.V(this.ba, I() ? 'touchstart' : 'mousedown', function (a) {
                na(a)
            })
            return this.ba
        },
        draw: function () {
            var a = this.map.Ve(this.K.point)
            this.K.Da = new P(-Math.round(this.K.width / 2) - Math.round(this.K.kx), -Math.round(this.K.height / 2) - Math.round(this.K.kx))
            this.ba.style.left = a.x + this.K.Da.width + 'px'
            this.ba.style.top = a.y + this.K.Da.height + 'px'
        },
        ja: function () {
            return this.K.point
        },
        P0: function () {
            return this.map.Rb(this.ja())
        },
        ua: function (a) {
            this.K.point = a
            this.draw()
        },
        zZ: function (a, b) {
            this.K.width = Math.round(a)
            this.K.height = Math.round(b)
            this.ba && (this.ba.style.width = this.K.width + 'px',
            this.ba.style.height = this.K.height + 'px',
            this.draw())
        }
    })
    function qc (a, b, c) {
        a && b && (this.imageUrl = a,
        this.size = b,
        a = new P(Math.floor(b.width / 2), Math.floor(b.height / 2)),
        c = c || {},
        a = c.anchor || a,
        b = c.imageOffset || new P(0, 0),
        this.imageSize = c.imageSize,
        this.anchor = a,
        this.imageOffset = b,
        this.infoWindowAnchor = c.infoWindowAnchor || this.anchor,
        this.printImageUrl = c.printImageUrl || '')
    }
    z.extend(qc.prototype, {
        aN: function (a) {
            a && (this.imageUrl = a)
        },
        PZ: function (a) {
            a && (this.printImageUrl = a)
        },
        Ae: function (a) {
            a && (this.size = new P(a.width, a.height))
        },
        uc: function (a) {
            a && (this.anchor = new P(a.width, a.height))
        },
        jt: function (a) {
            a && (this.imageOffset = new P(a.width, a.height))
        },
        EZ: function (a) {
            a && (this.infoWindowAnchor = new P(a.width, a.height))
        },
        BZ: function (a) {
            a && (this.imageSize = new P(a.width, a.height))
        },
        toString: ea('Icon')
    })
    function rc (a, b) {
        if (a) {
            b = b || {}
            this.style = {
                anchor: b.anchor || new P(0, 0),
                fillColor: b.fillColor || '#000',
                lg: b.fillOpacity || 0,
                scale: b.scale || 1,
                rotation: b.rotation || 0,
                strokeColor: b.strokeColor || '#000',
                sd: b.strokeOpacity || 1,
                qc: b.strokeWeight
            }
            this.Mb = typeof a === 'number' ? a : 'UserDefined'
            this.wi = this.style.anchor
            this.Jq = new P(0, 0)
            this.anchor = s
            this.zA = a
            var c = this
            K.load('symbol', function () {
                c.an()
            }, p)
        }
    }
    z.extend(rc.prototype, {
        setPath: ca('zA'),
        setAnchor: function (a) {
            this.wi = this.style.anchor = a
        },
        setRotation: function (a) {
            this.style.rotation = a
        },
        setScale: function (a) {
            this.style.scale = a
        },
        setStrokeWeight: function (a) {
            this.style.qc = a
        },
        setStrokeColor: function (a) {
            a = z.xr.FB(a, this.style.sd)
            this.style.strokeColor = a
        },
        setStrokeOpacity: function (a) {
            this.style.sd = a
        },
        setFillOpacity: function (a) {
            this.style.lg = a
        },
        setFillColor: function (a) {
            this.style.fillColor = a
        }
    })
    function sc (a, b, c, e) {
        a && (this.av = {},
        this.aK = e ? !!e : t,
        this.Uc = [],
        this.h_ = a instanceof rc ? a : s,
        this.KH = b === l ? p : !!(b.indexOf('%') + 1),
        this.Nj = isNaN(parseFloat(b)) ? 1 : this.KH ? parseFloat(b) / 100 : parseFloat(b),
        this.LH = !!(c.indexOf('%') + 1),
        this.repeat = c != l ? this.LH ? parseFloat(c) / 100 : parseFloat(c) : 0)
    }
    ;function tc (a, b) {
        z.lang.Ga.call(this)
        this.content = a
        this.map = s
        b = b || {}
        this.K = {
            width: b.width || 0,
            height: b.height || 0,
            maxWidth: b.maxWidth || 730,
            Da: b.offset || new P(0, 0),
            title: b.title || '',
            RD: b.maxContent || '',
            Xg: b.enableMaximize || t,
            Wr: b.enableAutoPan === t ? t : p,
            kC: b.enableCloseOnClick === t ? t : p,
            margin: b.margin || [10, 10, 40, 10],
            BB: b.collisions || [[10, 10], [10, 10], [10, 10], [10, 10]],
            wX: t,
            yY: b.onClosing || ea(p),
            UJ: t,
            qC: b.enableParano === p ? p : t,
            message: b.message,
            sC: b.enableSearchTool === p ? p : t,
            Uw: b.headerContent || '',
            lC: b.enableContentScroll || t
        }
        if (this.K.width != 0 && (this.K.width < 220 && (this.K.width = 220),
        this.K.width > 730)) { this.K.width = 730 }
        if (this.K.height != 0 && (this.K.height < 60 && (this.K.height = 60),
        this.K.height > 650)) { this.K.height = 650 }
        if (this.K.maxWidth != 0 && (this.K.maxWidth < 220 && (this.K.maxWidth = 220),
        this.K.maxWidth > 730)) { this.K.maxWidth = 730 }
        this.be = t
        this.ri = H.sa
        this.sb = s
        var c = this
        K.load('infowindow', function () {
            c.jb()
        })
    }
    z.lang.wa(tc, z.lang.Ga, 'InfoWindow')
    z.extend(tc.prototype, {
        setWidth: function (a) {
            !a && a != 0 || (isNaN(a) || a < 0) || (a != 0 && (a < 220 && (a = 220),
            a > 730 && (a = 730)),
            this.K.width = a)
        },
        setHeight: function (a) {
            !a && a != 0 || (isNaN(a) || a < 0) || (a != 0 && (a < 60 && (a = 60),
            a > 650 && (a = 650)),
            this.K.height = a)
        },
        eN: function (a) {
            !a && a != 0 || (isNaN(a) || a < 0) || (a != 0 && (a < 220 && (a = 220),
            a > 730 && (a = 730)),
            this.K.maxWidth = a)
        },
        Dc: function (a) {
            this.K.title = a
        },
        getTitle: function () {
            return this.K.title
        },
        cd: ca('content'),
        jk: x('content'),
        lt: function (a) {
            this.K.RD = a + ''
        },
        he: u(),
        Wr: function () {
            this.K.Wr = p
        },
        disableAutoPan: function () {
            this.K.Wr = t
        },
        enableCloseOnClick: function () {
            this.K.kC = p
        },
        disableCloseOnClick: function () {
            this.K.kC = t
        },
        Xg: function () {
            this.K.Xg = p
        },
        tw: function () {
            this.K.Xg = t
        },
        show: function () {
            this.Sa = p
        },
        aa: function () {
            this.Sa = t
        },
        close: function () {
            this.aa()
        },
        nx: function () {
            this.be = p
        },
        restore: function () {
            this.be = t
        },
        Nc: function () {
            return this.Za()
        },
        Za: ea(t),
        ja: function () {
            if (this.sb && this.sb.ja) { return this.sb.ja() }
        },
        cj: function () {
            return this.K.Da
        }
    })
    Oa.prototype.ad = function (a, b) {
        if (a instanceof tc && b instanceof J) {
            var c = this.$
            c.nm ? c.nm.ua(b) : (c.nm = new V(b, {
                icon: new qc(H.sa + 'blank.gif', {
                    width: 1,
                    height: 1
                }),
                offset: new P(0, 0),
                clickable: t
            }),
            c.nm.DQ = 1)

            console.log('c.nm ===> ', c.nm)
            this.Pa(c.nm)
            c.nm.ad(a)
        }
    }

    Oa.prototype.Xc = function () {
        var a = this.$.rb || this.$.cl
        a && a.sb && a.sb.Xc()
    }

    ib.prototype.ad = function (a) {
        this.map && (this.map.Xc(),
        a.Sa = p,
        this.map.$.cl = a,
        a.sb = this,
        z.lang.Ga.call(a, a.ea))
    }

    ib.prototype.Xc = function () {
        this.map && this.map.$.cl && (this.map.$.cl.Sa = t,
        z.lang.rw(this.map.$.cl.ea),
        this.map.$.cl = s)
    }

    function uc (a, b) {
        ib.call(this)
        this.content = a
        this.ba = this.map = s
        b = b || {}
        this.K = {
            width: 0,
            Da: b.offset || new P(0, 0),
            up: {
                backgroundColor: '#fff',
                border: '1px solid #f00',
                padding: '1px',
                whiteSpace: 'nowrap',
                font: '12px ' + H.fontFamily,
                zIndex: '80',
                MozUserSelect: 'none'
            },
            position: b.position || s,
            Yi: b.enableMassClear === t ? t : p,
            cf: p
        }
        this.K.width < 0 && (this.K.width = 0)
        Hb(b.enableClicking) && (this.K.cf = b.enableClicking)
        this.point = this.K.position
        var c = this
        K.load('marker', function () {
            c.jb()
        })
    }
    z.lang.wa(uc, ib, 'Label')
    z.extend(uc.prototype, {
        ja: function () {
            return this.Qu ? this.Qu.ja() : this.point
        },
        ua: function (a) {
            a instanceof J && !this.Jw() && (this.point = this.K.position = new J(a.lng, a.lat))
        },
        cd: ca('content'),
        yE: function (a) {
            a >= 0 && a <= 1 && (this.K.opacity = a)
        },
        ie: function (a) {
            a instanceof P && (this.K.Da = new P(a.width, a.height))
        },
        cj: function () {
            return this.K.Da
        },
        Ld: function (a) {
            a = a || {}
            this.K.up = z.extend(this.K.up, a)
        },
        mi: function (a) {
            return this.Ld(a)
        },
        Dc: function (a) {
            this.K.title = a || ''
        },
        getTitle: function () {
            return this.K.title
        },
        dN: function (a) {
            this.point = (this.Qu = a) ? this.K.position = a.ja() : this.K.position = s
        },
        Jw: function () {
            return this.Qu || s
        },
        jk: x('content')
    })
    function vc (a, b) {
        if (arguments.length !== 0) {
            ib.apply(this, arguments)
            b = b || {}
            this.K = {
                fb: a,
                opacity: b.opacity || 1,
                im: b.im || '',
                Nr: b.displayOnMinLevel || 1,
                Yi: b.enableMassClear === t ? t : p,
                Mr: b.displayOnMaxLevel || 19,
                b_: b.stretch || t
            }
            var c = this
            K.load('groundoverlay', function () {
                c.jb()
            })
        }
    }
    z.lang.wa(vc, ib, 'GroundOverlay')
    z.extend(vc.prototype, {
        setBounds: function (a) {
            this.K.fb = a
        },
        getBounds: function () {
            return this.K.fb
        },
        setOpacity: function (a) {
            this.K.opacity = a
        },
        getOpacity: function () {
            return this.K.opacity
        },
        setImageURL: function (a) {
            this.K.im = a
        },
        getImageURL: function () {
            return this.K.im
        },
        setDisplayOnMinLevel: function (a) {
            this.K.Nr = a
        },
        getDisplayOnMinLevel: function () {
            return this.K.Nr
        },
        setDisplayOnMaxLevel: function (a) {
            this.K.Mr = a
        },
        getDisplayOnMaxLevel: function () {
            return this.K.Mr
        }
    })
    var wc = 3
       var xc = 4
    function yc () {
        var a = document.createElement('canvas')
        return !(!a.getContext || !a.getContext('2d'))
    }
    function zc (a, b) {
        var c = this
        yc() && (a === l && aa(Error('\u6ca1\u6709\u4f20\u5165points\u6570\u636e')),
        Object.prototype.toString.call(a) !== '[object Array]' && aa(Error('points\u6570\u636e\u4e0d\u662f\u6570\u7ec4')),
        b = b || {},
        ib.apply(c, arguments),
        c.ia = {
            na: a
        },
        c.K = {
            shape: b.shape || wc,
            size: b.size || xc,
            color: b.color || '#fa937e',
            Yi: p
        },
        this.wA = [],
        this.ne = [],
        K.load('pointcollection', function () {
            for (var a = 0, b; b = c.wA[a]; a++) { c[b.method].apply(c, b.arguments) }
            for (a = 0; b = c.ne[a]; a++) { c[b.method].apply(c, b.arguments) }
        }))
    }
    z.lang.wa(zc, ib, 'PointCollection')
    z.extend(zc.prototype, {
        initialize: function (a) {
            this.wA && this.wA.push({
                method: 'initialize',
                arguments: arguments
            })
        },
        setPoints: function (a) {
            this.ne && this.ne.push({
                method: 'setPoints',
                arguments: arguments
            })
        },
        setStyles: function (a) {
            this.ne && this.ne.push({
                method: 'setStyles',
                arguments: arguments
            })
        },
        clear: function () {
            this.ne && this.ne.push({
                method: 'clear',
                arguments: arguments
            })
        },
        remove: function () {
            this.ne && this.ne.push({
                method: 'remove',
                arguments: arguments
            })
        }
    })
    var Ac = new qc(H.sa + 'marker_red_sprite.png', new P(19, 25), {
        anchor: new P(10, 25),
        infoWindowAnchor: new P(10, 0)
    })
       var Bc = new qc(H.sa + 'marker_red_sprite.png', new P(20, 11), {
        anchor: new P(6, 11),
        imageOffset: new P(-19, -13)
    })
    function V (a, b) {
        ib.call(this)
        b = b || {}
        this.point = a
        this.Sp = this.map = s
        this.K = {
            Da: b.offset || new P(0, 0),
            ue: b.icon || Ac,
            Dk: Bc,
            title: b.title || '',
            label: s,
            $I: b.baseZIndex || 0,
            cf: p,
            v5: t,
            ED: t,
            Yi: b.enableMassClear === t ? t : p,
            Wb: t,
            IM: b.raiseOnDrag === p ? p : t,
            QM: t,
            Gd: b.draggingCursor || H.Gd,
            rotation: b.rotation || 0
        }
        b.icon && !b.shadow && (this.K.Dk = s)
        b.enableDragging && (this.K.Wb = b.enableDragging)
        Hb(b.enableClicking) && (this.K.cf = b.enableClicking)
        var c = this
        K.load('marker', function () {
            c.jb()
        })
    }
    V.fu = mc.pk(-90) + 1E6
    V.xF = V.fu + 1E6
    z.lang.wa(V, ib, 'Marker')
    z.extend(V.prototype, {
        Tb: function (a) {
            if (a instanceof qc || a instanceof rc) { this.K.ue = a }
        },
        Do: function () {
            return this.K.ue
        },
        Sx: function (a) {
            a instanceof qc && (this.K.Dk = a)
        },
        getShadow: function () {
            return this.K.Dk
        },
        Dm: function (a) {
            this.K.label = a || s
        },
        UC: function () {
            return this.K.label
        },
        Wb: function () {
            this.K.Wb = p
        },
        UB: function () {
            this.K.Wb = t
        },
        ja: x('point'),
        ua: function (a) {
            a instanceof J && (this.point = new J(a.lng, a.lat))
        },
        ni: function (a, b) {
            this.K.ED = !!a
            a && (this.SF = b || 0)
        },
        Dc: function (a) {
            this.K.title = a + ''
        },
        getTitle: function () {
            return this.K.title
        },
        ie: function (a) {
            a instanceof P && (this.K.Da = a)
        },
        cj: function () {
            return this.K.Da
        },
        Cm: ca('Sp'),
        lp: function (a) {
            this.K.rotation = a
        },
        CK: function () {
            return this.K.rotation
        }
    })
    function Cc (a) {
        this.options = a || {}
        this.CY = this.options.paneName || 'labelPane'
        this.zIndex = this.options.zIndex || 0
        this.MU = this.options.contextType || '2d'
    }
    Cc.prototype = new mc()
    Cc.prototype.initialize = function (a) {
        this.M = a
        var b = this.canvas = document.createElement('canvas')
           var c = this.canvas.getContext(this.MU)
        b.style.cssText = 'position:absolute;left:0;top:0;z-index:' + this.zIndex + ';'
        Dc(this)
        Ec(c)
        a.getPanes()[this.CY].appendChild(b)
        var e = this
        a.addEventListener('resize', function () {
            Dc(e)
            Ec(c)
            e.jb()
        })
        return this.canvas
    }

    function Dc (a) {
        var b = a.M.Hb()
           var a = a.canvas
        a.width = b.width
        a.height = b.height
        a.style.width = a.width + 'px'
        a.style.height = a.height + 'px'
    }
    function Ec (a) {
        var b = (window.devicePixelRatio || 1) / (a.$T || a.q5 || a.O3 || a.P3 || a.T3 || a.$T || 1)
           var c = a.canvas.width
           var e = a.canvas.height
        a.canvas.width = c * b
        a.canvas.height = e * b
        a.canvas.style.width = c + 'px'
        a.canvas.style.height = e + 'px'
        a.scale(b, b)
    }
    Cc.prototype.draw = function () {
        var a = this
           var b = arguments
        clearTimeout(a.q_)
        a.q_ = setTimeout(function () {
            a.jb.apply(a, b)
        }, 15)
    }

    fa = Cc.prototype
    fa.jb = function () {
        var a = this.M
        this.canvas.style.left = -a.offsetX + 'px'
        this.canvas.style.top = -a.offsetY + 'px'
        this.dispatchEvent('draw')
        this.options.update && this.options.update.apply(this, arguments)
    }

    fa.Ua = x('canvas')
    fa.show = function () {
        console.log('this >>> ', this)
        this.canvas || this.M.Pa(this)
        this.canvas.style.display = 'block'
    }

    fa.aa = function () {
        this.canvas.style.display = 'none'
    }

    fa.pp = function (a) {
        this.canvas.style.zIndex = a
    }

    fa.pk = x('zIndex')
    function Fc (a, b) {
        oc.call(this, b)
        b = b || {}
        this.K.lg = b.fillOpacity ? b.fillOpacity : 0.65
        this.K.fillColor = b.fillColor == '' ? '' : b.fillColor ? b.fillColor : '#fff'
        this.je(a)
        var c = this
        K.load('poly', function () {
            c.jb()
        })
    }
    z.lang.wa(Fc, oc, 'Polygon')
    z.extend(Fc.prototype, {
        je: function (a, b) {
            this.Qn = oc.Fw(a).slice(0)
            var c = oc.Fw(a).slice(0)
            c.length > 1 && c.push(new J(c[0].lng, c[0].lat))
            oc.prototype.je.call(this, c, b)
        },
        Fm: function (a, b) {
            this.Qn[a] && (this.Qn[a] = new J(b.lng, b.lat),
            this.na[a] = new J(b.lng, b.lat),
            a == 0 && !this.na[0].oc(this.na[this.na.length - 1]) && (this.na[this.na.length - 1] = new J(b.lng, b.lat)),
            this.th())
        },
        Re: function () {
            var a = this.Qn
            a.length == 0 && (a = this.na)
            return a
        }
    })
    function Gc (a, b) {
        oc.call(this, b)
        this.er(a)
        var c = this
        K.load('poly', function () {
            c.jb()
        })
    }
    z.lang.wa(Gc, oc, 'Polyline')
    function Hc (a, b, c) {
        this.point = a
        this.Ca = Math.abs(b)
        Fc.call(this, [], c)
    }
    Hc.ZD = [0.01, 1.0E-4, 1.0E-5, 4.0E-6]
    z.lang.wa(Hc, Fc, 'Circle')
    z.extend(Hc.prototype, {
        initialize: function (a) {
            this.map = a
            this.na = this.Du(this.point, this.Ca)
            this.th()
            return s
        },
        Bb: x('point'),
        pf: function (a) {
            a && (this.point = a)
        },
        AK: x('Ca'),
        qf: function (a) {
            this.Ca = Math.abs(a)
        },
        Du: function (a, b) {
            if (!a || !b || !this.map) { return [] }
            for (var c = [], e = b / 6378800, f = Math.PI / 180 * a.lat, g = Math.PI / 180 * a.lng, i = 0; i < 360; i += 9) {
                var k = Math.PI / 180 * i
                   var m = Math.asin(Math.sin(f) * Math.cos(e) + Math.cos(f) * Math.sin(e) * Math.cos(k))
                   var k = new J(((g - Math.atan2(Math.sin(k) * Math.sin(e) * Math.cos(f), Math.cos(e) - Math.sin(f) * Math.sin(m)) + Math.PI) % (2 * Math.PI) - Math.PI) * (180 / Math.PI), m * (180 / Math.PI))
                c.push(k)
            }
            e = c[0]
            c.push(new J(e.lng, e.lat))
            return c
        }
    })
    var Ic = {}
    function Jc (a) {
        this.map = a
        this.mm = []
        this.Uf = []
        this.xg = []
        this.oU = 300
        this.fE = 0
        this.rg = {}
        this.Si = {}
        this.tk = 0
        this.yD = p
        this.bV = {}
        this.An = this.bq(1)
        this.hg = this.bq(2)
        this.ml = this.bq(3)
        this.Hg = this.bq(4)
        a.platform.appendChild(this.An)
        a.platform.appendChild(this.hg)
        a.platform.appendChild(this.ml)
        a.platform.appendChild(this.Hg)
        var b = 256 * Math.pow(2, 15)
           var c = 3 * b
           var a = S.Gb(new J(180, 0)).lng
           var c = c - a
           var b = -3 * b
           var e = S.Gb(new J(-180, 0)).lng
        this.dA = a
        this.eA = e
        this.aA = c + (e - b)
        this.pH = a - e
    }
    D.We(function (a) {
        var b = new Jc(a)
        b.xa()
        a.oh = b
    })
    z.extend(Jc.prototype, {
        xa: function () {
            var a = this
               var b = a.map
            b.addEventListener('loadcode', function () {
                a.To()
            })
            b.addEventListener('addtilelayer', function (b) {
                a.Me(b)
            })
            b.addEventListener('removetilelayer', function (b) {
                a.Tf(b)
            })
            b.addEventListener('setmaptype', function (b) {
                a.wg(b)
            })
            b.addEventListener('zoomstartcode', function (b) {
                a.Kc(b)
            })
            b.addEventListener('setcustomstyles', function (b) {
                a.kt(b.target)
                a.Rf(p)
            })
            b.addEventListener('initindoorlayer', function (b) {
                a.uD(b)
            })
        },
        To: function () {
            var a = this
            if (z.ga.ma) {
 try {
                    document.execCommand('BackgroundImageCache', t, p)
                } catch (b) {}
}
            this.loaded || a.ax()
            a.Rf()
            this.loaded || (this.loaded = p,
            K.load('tile', function () {
                a.YO()
            }))
        },
        uD: function (a) {
            this.Ot = new Kc(this)
            this.Ot.Me(new Lc(this.map, this.Ot, a.Te))
        },
        ax: function () {
            for (var a = this.map.va().$e, b = 0; b < a.length; b++) {
                var c = new Mc()
                z.extend(c, a[b])
                this.mm.push(c)
                c.xa(this.map, this.An)
            }
            this.kt()
        },
        bq: function (a) {
            var b = O('div')
            b.style.position = 'absolute'
            b.style.overflow = 'visible'
            b.style.left = b.style.top = '0'
            b.style.zIndex = a
            return b
        },
        vf: function () {
            this.tk--
            var a = this
            this.yD && (this.map.dispatchEvent(new Q('onfirsttileloaded')),
            this.yD = t)
            this.tk == 0 && (this.Bi && (clearTimeout(this.Bi),
            this.Bi = s),
            this.Bi = setTimeout(function () {
                if (a.tk == 0) {
                    a.map.dispatchEvent(new Q('ontilesloaded'))
                    a.yD = p
                }
                a.Bi = s
            }, 80))
        },
        fD: function (a, b) {
            return 'TILE-' + b.ea + '-' + a[0] + '-' + a[1] + '-' + a[2]
        },
        Xw: function (a) {
            var b = a.Jb
            b && Ab(b) && b.parentNode.removeChild(b)
            delete this.rg[a.name]
            a.loaded || (Nc(a),
            a.Jb = s,
            a.om = s)
        },
        KK: function (a, b, c) {
            var e = this.map
               var f = e.va()
               var g = e.Va
               var i = e.fc
               var k = f.dc(g)
               var m = this.mW()
               var n = m[0]
               var o = m[1]
               var q = m[2]
               var v = m[3]
               var w = m[4]
               var c = typeof c !== 'undefined' ? c : 0
               var f = f.Id()
               var m = e.ea.replace(/^TANGRAM_/, '')
            for (this.Be ? this.Be.length = 0 : this.Be = []; n < q; n++) {
 for (var y = o; y < v; y++) {
                    var A = n
                       var B = y
                    this.Be.push([A, B])
                    A = m + '_' + b + '_' + A + '_' + B + '_' + g
                    this.bV[A] = A
                }
}
            this.Be.sort(function (a) {
                return function (b, c) {
                    return 0.4 * Math.abs(b[0] - a[0]) + 0.6 * Math.abs(b[1] - a[1]) - (0.4 * Math.abs(c[0] - a[0]) + 0.6 * Math.abs(c[1] - a[1]))
                }
            }([w[0] - 1, w[1] - 1]))
            i = [Math.round(-i.lng / k), Math.round(i.lat / k)]
            n = -e.offsetY + e.height / 2
            a.style.left = -e.offsetX + e.width / 2 + 'px'
            a.style.top = n + 'px'
            this.Ne ? this.Ne.length = 0 : this.Ne = []
            n = 0
            for (e = a.childNodes.length; n < e; n++) {
 y = a.childNodes[n],
                y.Bq = t,
                this.Ne.push(y)
}
            if (n = this.rm) {
 for (var C in n) { delete n[C] }
} else { this.rm = {} }
            this.Oe ? this.Oe.length = 0 : this.Oe = []
            n = 0
            for (e = this.Be.length; n < e; n++) {
                C = this.Be[n][0]
                k = this.Be[n][1]
                y = 0
                for (o = this.Ne.length; y < o; y++) {
 if (q = this.Ne[y],
                    q.id == m + '_' + b + '_' + C + '_' + k + '_' + g) {
                        q.Bq = p
                        this.rm[q.id] = q
                        break
                    }
}
            }
            n = 0
            for (e = this.Ne.length; n < e; n++) {
 q = this.Ne[n],
                q.Bq || this.Oe.push(q)
}
            this.QE = []
            y = (f + c) * this.map.U.devicePixelRatio
            n = 0
            for (e = this.Be.length; n < e; n++) {
 C = this.Be[n][0],
                k = this.Be[n][1],
                v = C * f + i[0] - c / 2,
                w = (-1 - k) * f + i[1] - c / 2,
                A = m + '_' + b + '_' + C + '_' + k + '_' + g,
                o = this.rm[A],
                q = s,
                o ? (q = o.style,
                q.left = v + 'px',
                q.top = w + 'px',
                o.jn || this.QE.push([C, k, o])) : (this.Oe.length > 0 ? (o = this.Oe.shift(),
                o.getContext('2d').clearRect(-c / 2, -c / 2, y, y),
                q = o.style) : (o = document.createElement('canvas'),
                q = o.style,
                q.position = 'absolute',
                q.width = f + c + 'px',
                q.height = f + c + 'px',
                this.XX() && (q.WebkitTransform = 'scale(1.001)'),
                o.setAttribute('width', y),
                o.setAttribute('height', y),
                a.appendChild(o)),
                o.id = A,
                q.left = v + 'px',
                q.top = w + 'px',
                A.indexOf('bg') > -1 && (v = '#F3F1EC',
                this.map.U.YT && (v = this.map.U.YT),
                q.background = v || ''),
                this.QE.push([C, k, o])),
                o.style.visibility = ''
}
            n = 0
            for (e = this.Oe.length; n < e; n++) { this.Oe[n].style.visibility = 'hidden' }
            return this.QE
        },
        XX: function () {
            return /M040/i.test(navigator.userAgent)
        },
        mW: function () {
            var a = this.map
               var b = a.va()
               var c = b.PK(a.Va)
               var e = a.fc
               var f = Math.ceil(e.lng / c)
               var g = Math.ceil(e.lat / c)
               var b = b.Id()
               var c = [f, g, (e.lng - f * c) / c * b, (e.lat - g * c) / c * b]
            return [c[0] - Math.ceil((a.width / 2 - c[2]) / b), c[1] - Math.ceil((a.height / 2 - c[3]) / b), c[0] + Math.ceil((a.width / 2 + c[2]) / b), c[1] + Math.ceil((a.height / 2 + c[3]) / b), c]
        },
        WZ: function (a, b, c, e) {
            var f = this
            f.C1 = b
            var g = this.map.va()
               var i = f.fD(a, c)
               var k = g.Id()
               var b = [a[0] * k + b[0], (-1 - a[1]) * k + b[1]]
               var m = this.rg[i]
            if (this.map.va() !== ab && this.map.va() !== Va) {
                var n = this.Uv(a[0], a[2]).offsetX
                b[0] += n
                b.W0 = n
            }
            m && m.Jb ? (yb(m.Jb, b),
            e && (e = new R(a[0], a[1]),
            g = this.map.U.we ? this.map.U.we.style : 'normal',
            e = c.getTilesUrl(e, a[2], g),
            m.loaded = t,
            Pc(m, e)),
            m.loaded ? this.vf() : Qc(m, function () {
                f.vf()
            })) : (m = this.Si[i]) && m.Jb ? (c.hc.insertBefore(m.Jb, c.hc.lastChild),
            this.rg[i] = m,
            yb(m.Jb, b),
            e && (e = new R(a[0], a[1]),
            g = this.map.U.we ? this.map.U.we.style : 'normal',
            e = c.getTilesUrl(e, a[2], g),
            m.loaded = t,
            Pc(m, e)),
            m.loaded ? this.vf() : Qc(m, function () {
                f.vf()
            })) : (m = k * Math.pow(2, g.Xh() - a[2]),
            new J(a[0] * m, a[1] * m),
            e = new R(a[0], a[1]),
            g = this.map.U.we ? this.map.U.we.style : 'normal',
            e = c.getTilesUrl(e, a[2], g),
            m = new Rc(this, e, b, a, c),
            Qc(m, function () {
                f.vf()
            }),
            m.zn(),
            this.rg[i] = m)
        },
        vf: function () {
            this.tk--
            var a = this
            this.tk == 0 && (this.Bi && (clearTimeout(this.Bi),
            this.Bi = s),
            this.Bi = setTimeout(function () {
                if (a.tk == 0) {
                    a.map.dispatchEvent(new Q('ontilesloaded'))
                    if (wa) {
                        if (sa && ta && ua) {
                            var b = eb()
                               var c = a.map.Hb()
                            setTimeout(function () {
                                Ta(5030, {
                                    load_script_time: ta - sa,
                                    load_tiles_time: b - ua,
                                    map_width: c.width,
                                    map_height: c.height,
                                    map_size: c.width * c.height
                                })
                            }, 1E4)
                            D.Qp('cus.fire', 'time', {
                                z_imgfirstloaded: b - ua
                            })
                        }
                        wa = t
                    }
                }
                a.Bi = s
            }, 80))
        },
        fD: function (a, b) {
            return this.map.va() === Sa ? 'TILE-' + b.ea + '-' + this.map.$v + '-' + a[0] + '-' + a[1] + '-' + a[2] : 'TILE-' + b.ea + '-' + a[0] + '-' + a[1] + '-' + a[2]
        },
        Xw: function (a) {
            var b = a.Jb
            b && (Sc(b),
            Ab(b) && b.parentNode.removeChild(b))
            delete this.rg[a.name]
            a.loaded || (Sc(b),
            Nc(a),
            a.Jb = s,
            a.om = s)
        },
        Uv: function (a, b) {
            for (var c = 0, e = 6 * Math.pow(2, b - 3), f = e / 2 - 1, g = -e / 2; a > f;) {
 a -= e,
                c -= this.aA
}
            for (; a < g;) {
 a += e,
                c += this.aA
}
            c = Math.round(c / Math.pow(2, 18 - b))
            return {
                offsetX: c,
                Ol: a
            }
        },
        qU: function (a) {
            for (var b = a.lng; b > this.dA;) { b -= this.pH }
            for (; b < this.eA;) { b += this.pH }
            a.lng = b
            return a
        },
        rU: function (a, b) {
            for (var c = 256 * Math.pow(2, 18 - b), e = Math.floor(this.dA / c), f = Math.floor(this.eA / c), c = Math.floor(this.aA / c), g = [], i = 0; i < a.length; i++) {
                var k = a[i]
                   var m = k[0]
                   var k = k[1]
                if (m >= e) {
                    var m = m + c
                       var n = 'id_' + m + '_' + k + '_' + b
                    a[n] || (a[n] = p,
                    g.push([m, k]))
                } else {
 m <= f && (m -= c,
                    n = 'id_' + m + '_' + k + '_' + b,
                    a[n] || (a[n] = p,
                    g.push([m, k])))
}
            }
            for (i = 0; i < g.length; i++) { a.push(g[i]) }
            return a
        },
        Rf: function (a) {
            if (!this.map.U.Xi) {
                var b = this
                if (b.map.va() == Sa) {
 K.load('coordtrans', function () {
                        b.map.Vb || (b.map.Vb = Sa.ik(b.map.Tg),
                        b.map.$v = Sa.mK(b.map.Vb))
                        b.rH()
                    }, p)
} else {
                    if (a && a) {
 for (var c in this.Si) { delete this.Si[c] }
}
                    b.rH(a)
                }
            }
        },
        rH: function (a) {
            var b = this.mm.concat(this.Uf)
               var c = b.length
               var e = this.map
               var f = e.va()
               var g = e.fc
               var i = e.width
               var i = e.va().dc(e.Va) * i
               var i = this.MX(g.lng - i / 2, g.lng + i / 2)
            this.map.va() !== ab && this.map.va() !== Va && (g = this.qU(g))
            for (var k = 0; k < c; k++) {
                var m = b[k]
                if (m.gc && e.Va < m.gc) { break }
                if (m.Tv) {
                    var n = this.hc = m.hc
                    if (a) {
                        var o = n
                        if (o && o.childNodes) {
 for (var q = o.childNodes.length, v = q - 1; v >= 0; v--) {
 q = o.childNodes[v],
                                o.removeChild(q),
                                q = s
}
}
                    }
                    if (this.map.Nd()) {
                        this.hg.style.display = 'block'
                        n.style.display = 'none'
                        this.map.dispatchEvent(new Q('vectorchanged'), {
                            isvector: p
                        })
                        continue
                    } else {
 n.style.display = 'block',
                        this.hg.style.display = 'none',
                        this.map.dispatchEvent(new Q('vectorchanged'), {
                            isvector: t
                        })
}
                }
                if (!m.V0 && !(m.gx && !this.map.Nd() || m.pL && this.map.Nd())) {
                    e = this.map
                    f = e.va()
                    n = f.nk()
                    q = e.Va
                    g = e.fc
                    f == Sa && g.oc(new J(0, 0)) && (g = e.fc = n.bi(e.pe, e.Vb))
                    var w = f.dc(q)
                       var n = f.PK(q)
                       var o = Math.ceil(g.lng / n)
                       var y = Math.ceil(g.lat / n)
                       var A = f.Id()
                       var n = [o, y, (g.lng - o * n) / n * A, (g.lat - y * n) / n * A]
                       var y = i ? 1.5 * (e.width / 2) : e.width / 2
                       var v = n[0] - Math.ceil((y - n[2]) / A)
                       var o = n[1] - Math.ceil((e.height / 2 - n[3]) / A)
                       var y = n[0] + Math.ceil((y + n[2]) / A)
                       var B = 0
                    f === Sa && e.ka() == 15 && (B = 1)
                    f = n[1] + Math.ceil((e.height / 2 + n[3]) / A) + B
                    this.VI = new J(g.lng, g.lat)
                    var C = this.rg; var A = -this.VI.lng / w; var B = this.VI.lat / w; var g = [Math.ceil(A), Math.ceil(B)]; var w = e.ka(); var F
                    for (F in C) {
                        var E = C[F]
                           var G = E.info;
                        (G[2] != w || G[2] == w && (v > G[0] || y <= G[0] || o > G[1] || f <= G[1])) && this.Xw(E)
                    }
                    C = -e.offsetX + e.width / 2
                    E = -e.offsetY + e.height / 2
                    m.hc && (m.hc.style.left = Math.ceil(A + C) - g[0] + 'px',
                    m.hc.style.top = Math.ceil(B + E) - g[1] + 'px',
                    m.hc.style.WebkitTransform = 'translate3d(0,0,0)')
                    A = []
                    for (e.$A = []; v < y; v++) {
 for (B = o; B < f; B++) {
 A.push([v, B]),
                            e.$A.push({
                                x: v,
                                y: B
                            })
}
}
                    this.map.va() !== ab && this.map.va() !== Va && (A = this.rU(A, q))
                    A.sort(function (a) {
                        return function (b, c) {
                            return 0.4 * Math.abs(b[0] - a[0]) + 0.6 * Math.abs(b[1] - a[1]) - (0.4 * Math.abs(c[0] - a[0]) + 0.6 * Math.abs(c[1] - a[1]))
                        }
                    }([n[0] - 1, n[1] - 1]))
                    q = A.length
                    this.tk += q
                    for (v = 0; v < q; v++) { this.WZ([A[v][0], A[v][1], w], g, m, a) }
                }
            }
        },
        MX: function (a, b) {
            return a < this.eA || b > this.dA
        },
        Me: function (a) {
            var b = this
               var c = a.target
            b.map.Nd()
            c.Nm && this.map.Me(c.Nm)
            if (c.gx) {
                for (a = 0; a < b.xg.length; a++) {
 if (b.xg[a] == c) { return }
}
                K.load('vector', function () {
                    c.xa(b.map, b.hg)
                    b.xg.push(c)
                }, p)
            } else {
                for (a = 0; a < b.Uf.length; a++) {
 if (b.Uf[a] == c) { return }
}
                c.xa(this.map, this.ml)
                b.Uf.push(c)
            }
        },
        Tf: function (a) {
            a = a.target
            this.map.Nd()
            a.Nm && this.map.Tf(a.Nm)
            if (a.gx) {
 for (var b = 0, c = this.xg.length; b < c; b++) { a == this.xg[b] && this.xg.splice(b, 1) }
} else {
                b = 0
                for (c = this.Uf.length; b < c; b++) { a == this.Uf[b] && this.Uf.splice(b, 1) }
            }
            a.remove()
        },
        wg: function () {
            for (var a = this.mm, b = 0, c = a.length; b < c; b++) { a[b].remove() }
            delete this.hc
            this.mm = []
            this.Si = this.rg = {}
            this.ax()
            this.Rf()
        },
        Kc: function () {
            var a = this
            a.ud && z.R.aa(a.ud)
            setTimeout(function () {
                a.Rf()
                a.map.dispatchEvent(new Q('onzoomend'))
            }, 10)
        },
        j5: u(),
        kt: function (a) {
            var b = this.map.va()
            if (!this.map.Nd() && (a ? this.map.U.e_ = a : a = this.map.U.e_,
            a)) {
 for (var c = s, c = D.Nt == '2' ? [D.url.proto + D.url.domain.main_domain_cdn.other[0] + '/'] : [D.url.proto + D.url.domain.main_domain_cdn.baidu[0] + '/', D.url.proto + D.url.domain.main_domain_cdn.baidu[1] + '/', D.url.proto + D.url.domain.main_domain_cdn.baidu[2] + '/'], e = 0, f; f = this.mm[e]; e++) {
 if (f.RZ == p) {
                        b.m.pc = 18
                        f.getTilesUrl = function (b, e) {
                            var f = b.x
                               var f = this.map.oh.Uv(f, e).Ol
                               var m = b.y
                               var n = Sb('normal')
                               var o = 1
                            this.map.Yw() && (o = 2)
                            n = 'customimage/tile?&x=' + f + '&y=' + m + '&z=' + e + '&udt=' + n + '&scale=' + o + '&ak=' + qa
                            n = a.styleStr ? n + ('&styles=' + encodeURIComponent(a.styleStr)) : n + ('&customid=' + a.style)
                            return c[Math.abs(f + m) % c.length] + n
                        }

                        break
                    }
}
}
        }
    })
    function Rc (a, b, c, e, f) {
        this.om = a
        this.position = c
        this.pu = []
        this.name = a.fD(e, f)
        this.info = e
        this.vI = f.Ks()
        e = O('img')
        zb(e)
        e.fK = t
        var g = e.style
           var a = a.map.va()
        g.position = 'absolute'
        g.border = 'none'
        g.width = a.Id() + 'px'
        g.height = a.Id() + 'px'
        g.left = c[0] + 'px'
        g.top = c[1] + 'px'
        g.maxWidth = 'none'
        this.Jb = e
        this.src = b
        Tc && (this.Jb.style.opacity = 0)
        var i = this
        this.Jb.onload = function () {
            D.eY.LP()
            i.loaded = p
            if (i.om) {
                var a = i.om
                   var b = a.Si
                if (!b[i.name]) {
                    a.fE++
                    b[i.name] = i
                }
                if (i.Jb && !Ab(i.Jb) && f.hc) {
                    f.hc.appendChild(i.Jb)
                    if (z.ga.ma <= 6 && z.ga.ma > 0 && i.vI) { i.Jb.style.cssText = i.Jb.style.cssText + (';filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + i.src + '",sizingMethod=scale);') }
                }
                var c = a.fE - a.oU; var e
                for (e in b) {
                    if (c <= 0) { break }
                    if (!a.rg[e]) {
                        b[e].om = s
                        var g = b[e].Jb
                        if (g && g.parentNode) {
                            g.parentNode.removeChild(g)
                            Sc(g)
                        }
                        g = s
                        b[e].Jb = s
                        delete b[e]
                        a.fE--
                        c--
                    }
                }
                Tc && new ub({
                    Hc: 20,
                    duration: 200,
                    za: function (a) {
                        if (i.Jb && i.Jb.style) { i.Jb.style.opacity = a * 1 }
                    },
                    finish: function () {
                        i.Jb && i.Jb.style && delete i.Jb.style.opacity
                    }
                })
                Nc(i)
            }
        }

        this.Jb.onerror = function () {
            Nc(i)
            if (i.om) {
                var a = i.om.map.va()
                if (a.m.vC) {
                    i.error = p
                    i.Jb.src = a.m.vC
                    i.Jb && !Ab(i.Jb) && f.hc.appendChild(i.Jb)
                }
            }
        }

        e = s
    }
    function Qc (a, b) {
        a.pu.push(b)
    }
    Rc.prototype.zn = function () {
        this.Jb.src = z.ga.ma > 0 && z.ga.ma <= 6 && this.vI ? H.sa + 'blank.gif' : this.src !== '' && this.Jb.src == this.src ? this.src + '&t = ' + Date.now() : this.src
    }

    function Nc (a) {
        for (var b = 0; b < a.pu.length; b++) { a.pu[b]() }
        a.pu.length = 0
    }
    function Sc (a) {
        if (a) {
            a.onload = a.onerror = s
            var b = a.attributes; var c; var e; var f
            if (b) {
                e = b.length
                for (c = 0; c < e; c += 1) {
 f = b[c].name,
                    $a(a[f]) && (a[f] = s)
}
            }
            if (b = a.children) {
                e = b.length
                for (c = 0; c < e; c += 1) { Sc(a.children[c]) }
            }
        }
    }
    function Pc (a, b) {
        a.src = b
        a.zn()
    }
    var Tc = !z.ga.ma || z.ga.ma > 8
    function Mc (a) {
        this.Te = a || {}
        this.OU = this.Te.copyright || s
        this.F_ = this.Te.transparentPng || t
        this.Tv = this.Te.baseLayer || t
        this.zIndex = this.Te.zIndex || 0
        this.ea = Mc.uR++
    }
    Mc.uR = 0
    z.lang.wa(Mc, z.lang.Ga, 'TileLayer')
    z.extend(Mc.prototype, {
        xa: function (a, b) {
            this.Tv && (this.zIndex = -100)
            this.map = a
            if (!this.hc) {
                var c = O('div')
                   var e = c.style
                e.position = 'absolute'
                e.overflow = 'visible'
                e.zIndex = this.zIndex
                e.left = Math.ceil(-a.offsetX + a.width / 2) + 'px'
                e.top = Math.ceil(-a.offsetY + a.height / 2) + 'px'
                b.appendChild(c)
                this.hc = c
            }
        },
        remove: function () {
            this.hc && this.hc.parentNode && (this.hc.innerHTML = '',
            this.hc.parentNode.removeChild(this.hc))
            delete this.hc
        },
        Ks: x('F_'),
        getTilesUrl: function (a, b) {
            if (this.map.va() !== ab && this.map.va() !== Va) { var c = this.map.oh.Uv(a.x, b).Ol }
            var e = ''
            this.Te.tileUrlTemplate && (e = this.Te.tileUrlTemplate.replace(/\{X\}/, c),
            e = e.replace(/\{Y\}/, a.y),
            e = e.replace(/\{Z\}/, b))
            return e
        },
        Wl: x('OU'),
        va: function () {
            return this.Db || Pa
        }
    })
    function Uc (a) {
        Mc.call(this, a)
        this.m = a || {}
        this.pL = p
        if (this.m.predictDate) {
            if (this.m.predictDate.weekday < 1 || this.m.predictDate.weekday > 7) { this.m.predictDate = 1 }
            if (this.m.predictDate.hour < 0 || this.m.predictDate.hour > 23) { this.m.predictDate.hour = 0 }
        }
        this.vT = D.url.proto + D.url.domain.traffic + '/traffic/'
    }
    Uc.prototype = new Mc()
    Uc.prototype.xa = function (a, b) {
        Mc.prototype.xa.call(this, a, b)
        this.M = a
    }

    Uc.prototype.Ks = ea(p)
    Uc.prototype.getTilesUrl = function (a, b) {
        var c = ''
        this.m.predictDate ? c = 'HistoryService?day=' + (this.m.predictDate.weekday - 1) + '&hour=' + this.m.predictDate.hour + '&t=' + (new Date()).getTime() + '&' : (c = 'TrafficTileService?time=' + (new Date()).getTime() + '&',
        c += 'label=web2D&v=016&')
        var c = this.vT + c + 'level=' + b + '&x=' + a.x + '&y=' + a.y
           var e = 1
        this.M.Yw() && (e = 2)
        return (c + '&scaler=' + e).replace(/-(\d+)/gi, 'M$1')
    }

    var Vc = [D.url.proto + D.url.domain.TILES_YUN_HOST[0] + '/georender/gss', D.url.proto + D.url.domain.TILES_YUN_HOST[1] + '/georender/gss', D.url.proto + D.url.domain.TILES_YUN_HOST[2] + '/georender/gss', D.url.proto + D.url.domain.TILES_YUN_HOST[3] + '/georender/gss']
       var Wc = D.url.proto + D.url.domain.main_domain_nocdn.baidu + '/style/poi/rangestyle'
       var Xc = 100
    function pb (a, b) {
        Mc.call(this)
        var c = this
        this.pL = p
        try {
            document.createElement('canvas').getContext('2d')
        } catch (e) {}
        Ib(a) ? b = a || {} : (c.hn = a,
        b = b || {})
        b.geotableId && (c.xf = b.geotableId)
        b.databoxId && (c.hn = b.databoxId)
        var f = D.Cd + 'geosearch'
        c.$a = {
            AM: b.pointDensity || Xc,
            rX: f + '/detail/',
            sX: f + '/v2/detail/',
            SI: b.age || 36E5,
            ct: b.q || '',
            p_: 'png',
            j3: [5, 5, 5, 5],
            aY: {
                backgroundColor: '#FFFFD5',
                borderColor: '#808080'
            },
            lB: b.ak || qa,
            ME: b.tags || '',
            filter: b.filter || '',
            pN: b.sortby || '',
            mD: b.hotspotName || 'tile_md_' + (1E5 * Math.random()).toFixed(0),
            aF: p
        }
        K.load('clayer', function () {
            c.Qd()
        })
    }
    pb.prototype = new Mc()
    pb.prototype.xa = function (a, b) {
        Mc.prototype.xa.call(this, a, b)
        this.M = a
    }

    pb.prototype.getTilesUrl = function (a, b) {
        var c = a.x
           var e = a.y
           var f = this.$a
           var c = Vc[Math.abs(c + e) % Vc.length] + '/image?grids=' + c + '_' + e + '_' + b + '&q=' + f.ct + '&tags=' + f.ME + '&filter=' + f.filter + '&sortby=' + f.pN + '&ak=' + this.$a.lB + '&age=' + f.SI + '&page_size=' + f.AM + '&format=' + f.p_
        f.aF || (f = (1E5 * Math.random()).toFixed(0),
        c += '&timeStamp=' + f)
        this.xf ? c += '&geotable_id=' + this.xf : this.hn && (c += '&databox_id=' + this.hn)
        return c
    }

    pb.prototype.enableUseCache = function () {
        this.$a.aF = p
    }

    pb.prototype.disableUseCache = function () {
        this.$a.aF = t
    }

    pb.US = /^point\(|\)$/ig
    pb.VS = /\s+/
    pb.XS = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g
    var Yc = {}
    function Zc (a, b) {
        this.jd = a
        this.aP = 18
        this.m = {
            dy: 256,
            Pc: new S()
        }
        z.extend(this.m, b || {})
    }
    var $c = [0, 0, 0, 8, 7, 7, 6, 6, 5, 5, 4, 3, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0]
       var ad = [512, 2048, 4096, 32768, 65536, 262144, 1048576, 4194304, 8388608]
       var bd = [0, 0, 0, 3, 5, 5, 7, 7, 9, 9, 10, 12, 12, 12, 15, 15, 17, 17, 19, 19, 19, 19]
       var cd = [0, 0, 0, 256, 256, 512, 256, 512, 256, 512, 256, 256, 512, 1024, 256, 512, 512, 1024, 512, 1024, 2048, 4096]
    Zc.prototype = {
        getName: x('jd'),
        Id: function (a) {
            return this.jd === 'na' ? cd[a] : this.m.dy
        },
        gs: function (a) {
            return this.jd === 'na' ? bd[a] : a
        },
        nk: function () {
            return this.m.Pc
        },
        dc: function (a) {
            return Math.pow(2, this.aP - a)
        },
        XC: function (a) {
            return this.jd === 'na' ? ad[$c[a]] : this.dc(a) * this.Id(a)
        }
    }
    var dd = {
        drawPoly: function (a, b, c, e, f, g) {
            var i = a[1]
            if (i) {
 for (var a = a[6], k = 0; k < i.length; k++) {
                    var m = i[k][0]
                       var n = f.hj(m, 'polygon', c, g)
                    if (n && n.length) {
 for (var o = i[k][1], q = 0; q < o.length; q++) {
                            var v = o[q][1]
                            f.Nc(v[0], c) && (v['cache' + c] || (v['cache' + c] = f.um(v[1], c, e, a)),
                            v = v['cache' + c],
                            f.M.Vn(b.canvas.id, v, {
                                type: 'polygon',
                                Ub: m,
                                style: n
                            }),
                            this.EV(b, v, n, c))
                        }
}
                }
}
        },
        EV: function (a, b, c, e) {
            c = c[0]
            if (!c.Ub || !(e > 6 && (c.Ub === 71013 || c.Ub === 71012 || c.Ub === 71011) || e === 6 && (c.Ub === 71011 || c.Ub === 71012) || e === 5 && (c.Ub === 71011 || c.Ub === 71013) || e < 5 && (c.Ub === 71012 || c.Ub === 71013))) {
                a.fillStyle = c.zw
                a.beginPath()
                a.moveTo(b[0], b[1])
                for (var e = 2, f = b.length; e < f; e += 2) { a.lineTo(b[e], b[e + 1]) }
                a.closePath()
                c.borderWidth && (a.strokeStyle = c.co,
                a.lineWidth = c.borderWidth / 2,
                a.stroke())
                a.fill()
            }
        },
        drawGaoqingRoadBorder: function (a, b, c, e, f) {
            var g = a[1]
            if (g) {
 for (var a = a[6], i = 0; i < g.length; i++) {
                    var k = g[i][0]
                       var m = f.hj(k, 'polygon', c)
                    if (m && m.length && m[0].borderWidth) {
 for (var n = g[i][1], o = 0; o < n.length; o++) {
                            var q = n[o][1]
                            f.Nc(q[0], c) && (q['cache' + c] || (q['cache' + c] = f.um(q[1], c, e, a)),
                            q = q['cache' + c],
                            f.M.Vn(b.canvas.id, q, {
                                type: 'polygon',
                                Ub: k,
                                style: m
                            }),
                            this.GV(b, q, m))
                        }
}
                }
}
        },
        drawGaoqingRoadFill: function (a, b, c, e, f) {
            var g = a[1]
            if (g) {
 for (var a = a[6], i = 0; i < g.length; i++) {
                    var k = g[i][0]
                       var m = f.hj(k, 'polygon', c)
                    if (m && m.length) {
 for (var n = g[i][1], o = 0; o < n.length; o++) {
                            var q = n[o][1]
                            f.Nc(q[0], c) && (q['cache' + c] || (q['cache' + c] = f.um(q[1], c, e, a)),
                            q = q['cache' + c],
                            f.M.Vn(b.canvas.id, q, {
                                type: 'polygon',
                                Ub: k,
                                style: m
                            }),
                            this.HV(b, q, m))
                        }
}
                }
}
        },
        GV: function (a, b, c) {
            c = c[0]
            a.beginPath()
            a.moveTo(b[0], b[1])
            for (var e = 2, f = b.length; e < f; e += 2) { a.lineTo(b[e], b[e + 1]) }
            a.closePath()
            a.strokeStyle = c.co
            a.lineWidth = c.borderWidth / 2
            a.stroke()
        },
        HV: function (a, b, c) {
            a.fillStyle = c[0].zw
            a.beginPath()
            a.moveTo(b[0], b[1])
            for (var c = 2, e = b.length; c < e; c += 2) { a.lineTo(b[c], b[c + 1]) }
            a.closePath()
            a.fill()
        }
    }
    var ed = {
        drawArrow: function (a, b, c, e, f, g) {
            b.lineWidth = 1.5
            b.lineCap = 'butt'
            b.lineJoin = 'miter'
            b.strokeStyle = 'rgba(153,153,153,1)'
            var i = a[7]
            if (i) {
                a = i[1]
                e = g.um(i[0], c, e)
                for (i = 0; i < a.length; i++) {
 if (g.Nc(a[i], c)) {
                        var k = e[4 * i]
                           var m = e[4 * i + 1]
                           var n = e[4 * i + 2]
                           var o = e[4 * i + 3]
                           var q = (k + n) / 2
                           var v = (m + o) / 2
                           var n = (k - n) / f
                           var o = (m - o) / f
                           var k = q + n / 2
                           var n = q - n / 2
                           var m = v + o / 2
                           var o = v - o / 2
                        this.xV(b, k, m, n, o)
                    }
}
            }
        },
        xV: function (a, b, c, e, f) {
            a.beginPath()
            a.moveTo(b, c)
            a.lineTo(e, f)
            a.stroke()
            c = this.pU([b, c], [e, f])
            b = c[0]
            c = c[1]
            a.beginPath()
            a.moveTo(b[0], b[1])
            a.lineTo(c[0], c[1])
            a.lineTo(e, f)
            a.closePath()
            a.stroke()
        },
        pU: function (a, b) {
            var c = b[0] - a[0]
               var e = b[1] - a[1]
               var f = 1.8 * Math.sqrt(c * c + e * e)
               var g = b[0] + 4.8410665352790705 * (c / f)
               var f = b[1] + 4.8410665352790705 * (e / f)
               var c = Math.atan2(e, c) + Math.PI
            return [[g + 4.8410665352790705 * Math.cos(c - 0.3), f + 4.8410665352790705 * Math.sin(c - 0.3)], [g + 4.8410665352790705 * Math.cos(c + 0.3), f + 4.8410665352790705 * Math.sin(c + 0.3)]]
        }
    }
    var fd = {
        drawHregion: function (a, b, c, e, f) {
            var g = a[1]
            if (g) {
 for (var a = a[6], i = 0; i < g.length; i++) {
                    var k = g[i][0]
                       var m = f.hj(k, 'polygon3d', c)
                    if (m && m.length) {
 for (var n = g[i][1], o = 0; o < n.length; o++) {
                            var q = n[o][2]
                            if (f.Nc(q[0], c)) {
                                var v = q[2]
                                q['cache' + c] || (q['cache' + c] = f.um(q[1], c, e, a))
                                q = q['cache' + c]
                                f.M.Vn(b.canvas.id, q, {
                                    type: 'polygon',
                                    Ub: k,
                                    style: m
                                })
                                this.FV(b, q, v, m)
                            }
                        }
}
                }
}
        },
        FV: function (a, b, c, e) {
            e = e[0]
            if (!(c < e.filter)) {
                a.fillStyle = e.XV
                a.beginPath()
                a.moveTo(b[0], b[1])
                for (var c = 2, f = b.length; c < f; c += 2) { a.lineTo(b[c], b[c + 1]) }
                a.closePath()
                e.borderWidth && (a.strokeStyle = e.co,
                a.lineWidth = e.borderWidth / 2,
                a.stroke())
                a.fill()
            }
        }
    }
    var gd = {
        parse: function (a, b, c, e, f) {
            for (var g = e.M, i = g.ka(), k = Math.pow(2, 18 - i), m = g.Pc.bi(g.Bb()), n = m.lng, o = m.lat, m = g.Hb(), q = m.width, v = m.height, m = [], w = 0; w < a.length; w++) {
                var y = []
                   var A = a[w].n_
                y.x = A[0]
                y.y = A[1]
                y.u5 = A[2]
                for (var B = (A[0] * c * k - n) / k + q / 2, C = (o - (A[1] + 1) * c * k) / k + v / 2, F = 0; F < a[w].length; F++) { a[w][F].vL ? this.wM(a[w][F].vL, A, e, b, c, B, C, i, k, q, v, y) : a[w][F].yX ? this.wM(a[w][F].yX, A, e, b, c, B, C, i, k, q, v, y, p, window.n3) : this.IY(a[w][F].bY, A, e, b, c, B, C, i, k, q, v, y, f) }
                m.push(y)
            }
            if (/collision=0/.test(location.search)) {
                a = []
                for (w = 0; w < m.length; w++) {
 for (F = 0; F < m[w].length; F++) { a.push(m[w][F]) }
}
            } else { a = this.VY(m, e.M.ka()) }
            g.DU()
            for (w = 0; w < a.length; w++) {
 if (c = a[w],
                !c.Fs) {
 if (F = [c.Pf, c.Qf, c.Pf, c.fi, c.ei, c.fi, c.ei, c.Qf, c.Pf, c.Qf],
                    c.style && g.Vn('poi', F, {
                        type: 'polygon',
                        Ub: c.style.Ub,
                        style: c.style
                    }),
                    c.type === 'fixed') {
                        F = t
                        c.ue && (c.style && c.direction === 4) && (F = p)
                        if (c.ue) {
 if (F) {
                                var E = this
                                this.Ur(b, c, e, F, function (a) {
                                    for (var c = 0; c < a.rf.length; c++) { E.OJ(b, a.rf[c].$d, a.rf[c].ae, a.rf[c].text, a.style, e) }
                                })
                            } else { this.Ur(b, c, e) }
}
                        if (c.style && !F) {
 for (F = 0; F < c.rf.length; F++) { this.OJ(b, c.rf[F].$d, c.rf[F].ae, c.rf[F].text, c.style, e) }
}
                    } else if (c.type === 'line') {
 for (F = 0; F < c.eO.length; F++) {
 f = c.eO[F],
                            gd.AV(b, f.$d, f.ae, f.TT, f.cO, f.width, f.height, c.style, e)
}
}
}
}
            return m
        },
        wM: function (a, b, c, e, f, g, i, k, m, n, o, q, v, w) {
            a = a[1]
            for (b = 0; b < a.length; b++) {
                var y = a[b]
                   var A = y[0]
                   var B = c.hj(A, 'point', k, w)
                   var A = c.hj(A, 'pointText', k, w)
                   var y = y[1]
                   var C = s
                   var F = 100
                   var E = 0
                   var G = 0
                B && B[0] && (B = B[0],
                C = B.ue,
                F = B.zoom || 100)
                A = A && A[0] ? A[0] : s
                for (B = 0; B < y.length; B++) {
                    var N = y[B][4]
                    if (N && c.Nc(N[2], k)) {
                        var L = Math.round(N[0] / 100) / m + g
                           var M = f - Math.round(N[1] / 100) / m + i
                        if (v || !(L < -50 || M < -50 || L > n + 50 || M > o + 50)) {
                            var T = N[7] || ''
                               var da = {
                                type: 'fixed',
                                uid: N[3] || '',
                                name: T,
                                Ix: N[4],
                                As: s,
                                rf: [],
                                wx: [L, M],
                                style: A
                            }
                            if (C) {
                                var ba = window.iconSetInfo_high[C] || window.iconSetInfo_high['MapRes/' + C]
                                if (!ba) {
                                    var va = C.charCodeAt(0)
                                    va >= 48 && va <= 57 && (ba = window.iconSetInfo_high['_' + C])
                                }
                                ba && (E = ba[2],
                                G = ba[3],
                                E = E / 2 * F / 100,
                                G = G / 2 * F / 100,
                                da.As = {
                                    $d: L - E / 2,
                                    ae: M - G / 2,
                                    width: E,
                                    height: G
                                },
                                da.ue = C)
                            }
                            if (A) {
                                N = N[5]
                                typeof N !== 'number' && (N = 0)
                                var ya = ba = 0
                                   var va = (A.fontSize || 12) / 2
                                   var Ea = 0.2 * va
                                e.font = gd.Ew(A, c)
                                var T = T.split('\\')
                                   var ra = T.length
                                da.direction = N
                                for (var Ua = 0; Ua < ra; Ua++) {
                                    var re = T[Ua]
                                       var Oc = e.measureText(re).width
                                    switch (N) {
                                    case 3:
                                        ya = M - va / 2 * ra - Ea * (ra - 1) / 2
                                        ba = L - Oc - E / 2
                                        ya = ya + va * Ua + Ea * Ua
                                        break
                                    case 1:
                                        ya = M - va / 2 * ra - Ea * (ra - 1) / 2
                                        ba = L + E / 2
                                        ya = ya + va * Ua + Ea * Ua
                                        break
                                    case 2:
                                        ya = M - G / 2 - va * ra - Ea * (ra - 1) - Ea
                                        ba = L - Oc / 2
                                        ya = ya + va * Ua + Ea * Ua
                                        break
                                    case 0:
                                        ya = M + G / 2 + Ea / 2
                                        ba = L - Oc / 2
                                        ya = ya + va * Ua + Ea * Ua
                                        break
                                    case 4:
                                        ya = M - va / 2 * ra - Ea * (ra - 1) / 2,
                                        ba = L - Oc / 2,
                                        ya = ya + va * Ua + Ea * Ua
                                    }
                                    da.rf.push({
                                        $d: ba,
                                        ae: ya,
                                        width: Oc,
                                        height: va,
                                        text: re
                                    })
                                }
                            }
                            q.push(da)
                        }
                    }
                }
            }
        },
        IY: function (a, b, c, e, f, g, i, k, m, n, o, q, v) {
            b = a[7].length
            if ((n = c.hj(a[0], 'pointText', k)) && n.length) {
                n = n[0]
                e.font = gd.Ew(n, c)
                for (var o = n.fontSize / 2, w = a[1], y = a[2], A = y.split('').length, B = a[4], C = B.slice(0, 2), F = 2; F < B.length; F += 2) {
 C[F] = C[F - 2] + B[F],
                    C[F + 1] = C[F - 1] + B[F + 1]
}
                for (F = 2; F < B.length; F += 2) {
 F % (2 * A) === 0 || F % (2 * A) === 1 || (C[F] = C[F - 2] + B[F] / v,
                    C[F + 1] = C[F - 1] + B[F + 1] / v)
}
                for (v = 0; v < b; v++) {
 if (c.Nc(a[7][v], k)) {
                        var F = []
                           var E = l
                           var G = l
                           var N = l
                           var L = l
                           var M = y.split('')
                        a[6][v] && M.reverse()
                        for (var B = 2 * v * A, B = C.slice(B, B + 2 * A), T = 0; T < A; T++) {
                            var da = a[5][A * v + T]
                               var ba = B[2 * T] / 100 / m + g
                               var va = f - B[2 * T + 1] / 100 / m + i
                               var ya = M[T]
                               var Ea = e.measureText(ya).width
                            if (E === l) {
 E = ba - Ea / 2,
                                G = va - o / 2,
                                N = E + Ea,
                                L = G + o
} else {
                                var ra = ba - Ea / 2
                                   var Ua = va - o / 2
                                ra < E && (E = ra)
                                Ua < G && (G = Ua)
                                ra + Ea > N && (N = ra + Ea)
                                Ua + o > L && (L = Ua + o)
                            }
                            F.push({
                                cO: ya,
                                $d: ba,
                                ae: va,
                                TT: da,
                                width: Ea,
                                height: o
                            })
                        }
                        q.push({
                            type: 'line',
                            Ix: w,
                            style: n,
                            eO: F,
                            Pf: E,
                            Qf: G,
                            ei: N,
                            fi: L
                        })
                    }
}
            }
        },
        Ur: function (a, b, c, e, f) {
            var g = b.ue
            if (g !== 'lanche') {
 if (gd.Zw[g]) { this.LJ(a, b, gd.Zw[g], e, f) } else {
                    var c = c.tK(g)
                       var i = new Image()
                    i.setAttribute('crossOrigin', 'anonymous')
                    var k = this
                    i.onload = function () {
                        gd.Zw[g] = this
                        k.LJ(a, b, this, e, f)
                        i.onload = s
                    }

                    i.src = c
                }
}
        },
        LJ: function (a, b, c, e, f) {
            var g = b.As
               var i = g.$d
               var k = g.ae
               var m = s
               var n = s
               var o = p
               var q = b.style ? b.style.Ub : s
            if (b.style && q === 62203) {
                for (var v = n = m = 0; v < b.rf.length; v++) {
 m < b.rf[v].width && (m = b.rf[v].width),
                    n += 20
}
                m = Math.ceil(m) + 10
            }
            e && q === 519 && (o = t)
            m !== s && n !== s ? this.DV(a, b, c, 8, m, n) : e && o ? (m = Math.ceil(b.rf[0].width) + 6,
            this.wV(a, b, c, 12, m, c.height / 2)) : a.drawImage(c, i, k, g.width, g.height)
            f && f(b)
        },
        DV: function (a, b, c, e, f, g) {
            var i = b.wx[0] - f / 2
               var b = b.wx[1] - g / 2
            navigator.userAgent.indexOf('iPhone') > 0 && (b += 1)
            var k = e / 2
            a.drawImage(c, 0, 0, e, e, i, b, k, k)
            a.drawImage(c, e, 0, 1, e, i + k, b, f - 2 * k, k)
            a.drawImage(c, c.width - e, 0, e, e, i + f - k, b, k, k)
            a.drawImage(c, 0, e, e, 1, i, b + k, k, g - 2 * k)
            a.drawImage(c, e, e, 1, 1, i + k, b + k, f - 2 * k, g - 2 * k)
            a.drawImage(c, c.width - e, e, e, 1, i + f - k, b + k, k, g - 2 * k)
            a.drawImage(c, 0, c.height - e, e, e, i, b + g - k, k, k)
            a.drawImage(c, e, c.height - e, 1, e, i + k, b + g - k, f - 2 * k, k)
            a.drawImage(c, c.width - e, c.height - e, e, e, i + f - k, b + g - k, k, k)
        },
        wV: function (a, b, c, e, f, g) {
            var i = b.wx[0] - f / 2
               var b = b.wx[1] - g / 2
               var g = e / 2
            a.drawImage(c, 0, 0, e, c.height, i, b, g, c.height / 2)
            a.drawImage(c, e, 0, 1, c.height, i + g, b, f - 2 * g, c.height / 2)
            a.drawImage(c, c.width - e, 0, e, c.height, i + f - g, b, g, c.height / 2)
        },
        AV: function (a, b, c, e, f, g, i, k, m) {
            a.font = gd.Ew(k, m)
            a.fillStyle = k.dK
            g /= 2
            i /= 2
            a.save()
            a.translate(b, c)
            a.rotate(-e / 180 * Math.PI)
            k.Rw > 0 && (a.lineWidth = k.Rw,
            a.strokeStyle = k.UK,
            a.strokeText(f, -g, -i))
            a.fillText(f, -g, -i)
            a.restore()
        },
        OJ: function (a, b, c, e, f, g) {
            a.font = gd.Ew(f, g)
            a.fillStyle = f.dK
            f.Rw > 0 && (a.lineWidth = f.Rw,
            a.strokeStyle = f.UK,
            a.strokeText(e, b, c))
            a.fillText(e, b, c)
        },
        Ew: function (a, b) {
            var c = a.fontSize / 2
               var e = 10 * a.fontWeight
            return e = b.zD ? e + ' bold' + (' ' + c + 'px') + ' arial, "PingFang SC", sans-serif' : e + (' ' + c + 'px') + ' arial, sans-serif'
        },
        VY: function (a, b) {
            var c = []
               var e = 0
            b === 5 && (e = 1)
            a.sort(function (a, b) {
                return a.x * a.y < b.x * b.y ? -1 : 1
            })
            for (var f = 0, g = a.length; f < g; f++) {
 for (var i = a[f], k = 0, m = i.length; k < m; k++) {
                    var n = i[k]
                       var o = l
                       var q = l
                       var v = l
                       var w = l
                    if (n.type === 'fixed') {
                        var y = n.As
                           var A = n.rf
                        y && (o = y.$d,
                        q = y.ae,
                        v = y.$d + y.width,
                        w = y.ae + y.height)
                        for (y = 0; y < A.length; y++) {
                            var B = A[y]
                            o !== l ? (B.$d < o && (o = B.$d),
                            B.ae < q && (q = B.ae),
                            B.$d + B.width > v && (v = B.$d + B.width),
                            B.ae + B.height > w && (w = B.ae + B.height)) : (o = B.$d,
                            q = B.ae,
                            v = B.$d + B.width,
                            w = B.ae + B.height)
                        }
                    } else {
 n.type === 'line' ? (o = n.Pf,
                        q = n.Qf,
                        v = n.ei,
                        w = n.fi) : n.type === 'biaopai' && (w = n.j4,
                        o = w.$d,
                        q = w.ae,
                        v = w.$d + w.width,
                        w = w.ae + w.height)
}
                    o !== l && (n.Pf = o,
                    n.Qf = q,
                    n.ei = v,
                    n.fi = w,
                    c.push(n))
                }
}
            c.sort(function (a, b) {
                return b.Ix - a.Ix || b.Pf - a.Pf || b.Qf - a.Qf
            })
            f = 0
            for (g = c.length; f < g; f++) {
                m = c[f]
                m.Fs = t
                m.YI = []
                for (k = f + 1; k < g; k++) {
 i = c[k],
                    m.ei - e < i.Pf || (m.Pf > i.ei - e || m.fi - e < i.Qf || m.Qf > i.fi - e) || m.YI.push(k)
}
            }
            f = 0
            for (g = c.length; f < g; f++) {
 if (k = c[f],
                k.Fs === t) {
                    e = k.YI
                    k = 0
                    for (m = e.length; k < m; k++) { c[e[k]].Fs = p }
                }
}
            return c
        },
        Zw: {}
    }
    var hd = ['round', 'butt', 'square']
       var id = ['miter', 'round', 'bevel']
       var jd = {
        daojiao: [{
            stroke: '#FF6600',
            Ab: 1,
            yb: 'round',
            zb: 'round',
            rd: [4, 3]
        }],
        daojiao_bai: [{
            stroke: '#f5f3f0',
            Ab: 1,
            yb: 'round',
            zb: 'round',
            rd: [4, 3]
        }],
        junhuoxian: [{
            stroke: '#DB7093',
            Ab: 1,
            yb: 'round',
            zb: 'round',
            rd: [4, 3]
        }],
        lundu: [{
            stroke: '#5c91c5',
            Ab: 1,
            yb: 'round',
            zb: 'round',
            rd: [10, 11]
        }],
        shengjie: [{
            stroke: '#737373',
            Ab: 1,
            yb: 'round',
            zb: 'round',
            rd: [6, 3]
        }],
        weidingguojie: [{
            stroke: '#aea08a',
            Ab: 1,
            yb: 'round',
            zb: 'round',
            rd: [4, 3]
        }],
        weidingguojie_guowai: [{
            stroke: '#a29e96',
            Ab: 2,
            yb: 'round',
            zb: 'round',
            rd: [4, 3]
        }],
        weidingguojie_guonei: [{
            stroke: '#b5a37c',
            Ab: 2,
            yb: 'round',
            zb: 'round',
            rd: [4, 3]
        }]
    }
       var kd = {}
    function ld (a, b) {
        if (a === 'tielu' || a === 'tielu_0') {
            if (window.La[b].bmapRailwayVisibility === 'off') { return [] }
            var c = '#ffffff'
               var e = '#949494'
            window.La[b].bmapRailwayStrokeColor && (c = window.La[b].bmapRailwayStrokeColor)
            window.La[b].bmapRailwayFillColor && (e = window.La[b].bmapRailwayFillColor)
            if (b >= 4 && b <= 9 || b >= 10 && b <= 16) {
 return [{
                    stroke: c,
                    Ab: 1.5,
                    yb: 'butt',
                    zb: 'round',
                    rd: [10, 11]
                }, {
                    stroke: e,
                    Ab: 2,
                    yb: 'round',
                    zb: 'round'
                }]
}
            if (b >= 17 && b <= 18) {
 return [{
                    stroke: c,
                    Ab: 2.5,
                    yb: 'butt',
                    zb: 'round',
                    rd: [15, 16]
                }, {
                    stroke: e,
                    Ab: 5,
                    yb: 'round',
                    zb: 'round'
                }]
}
            if (b >= 19 && b <= 20) {
 return [{
                    stroke: c,
                    Ab: 4.5,
                    yb: 'butt',
                    zb: 'round',
                    rd: [25, 26]
                }, {
                    stroke: e,
                    Ab: 5,
                    yb: 'round',
                    zb: 'round'
                }]
}
        } else if (a.indexOf('ditie_zj') === 0) {
            if (b >= 12 && b <= 16) {
 return [{
                    stroke: '#868686',
                    Ab: 1,
                    yb: 'round',
                    zb: 'round',
                    rd: [7, 4]
                }]
}
            if (b >= 17 && b <= 18 || b >= 19 && b <= 20) {
 return [{
                    stroke: '#6e6e6e',
                    Ab: 1,
                    yb: 'round',
                    zb: 'round',
                    rd: [7, 4]
                }]
}
        } else if (/^tongdaomian/.test(a)) {
            if (b === 17) {
 return [{
                    stroke: '#e5e5e5',
                    Ab: 4,
                    yb: 'square',
                    zb: 'round'
                }, {
                    stroke: '#a8a8a8',
                    Ab: 6,
                    yb: 'square',
                    zb: 'round'
                }]
}
            if (b === 18) {
 return [{
                    stroke: '#e5e5e5',
                    Ab: 6,
                    yb: 'square',
                    zb: 'round'
                }, {
                    stroke: '#a8a8a8',
                    Ab: 8,
                    yb: 'square',
                    zb: 'round'
                }]
}
            if (b >= 19 && b <= 21) {
 return [{
                    stroke: '#e5e5e5',
                    Ab: 8,
                    yb: 'square',
                    zb: 'round'
                }, {
                    stroke: '#a8a8a8',
                    Ab: 10,
                    yb: 'square',
                    zb: 'round'
                }]
}
        } else if (/^jietizhongduan|^dixiatongdaojieti/.test(a)) {
            if (b === 17) {
 return [{
                    stroke: '#e5e5e5',
                    Ab: 4,
                    yb: 'butt',
                    zb: 'round',
                    rd: [2, 1]
                }, {
                    stroke: '#bebebe',
                    Ab: 6,
                    yb: 'butt',
                    zb: 'round'
                }]
}
            if (b === 18) {
 return [{
                    stroke: '#e5e5e5',
                    Ab: 6,
                    yb: 'butt',
                    zb: 'round',
                    rd: [3, 1]
                }, {
                    stroke: '#bebebe',
                    Ab: 8,
                    yb: 'butt',
                    zb: 'round'
                }]
}
            if (b >= 19 && b <= 21) {
 return [{
                    stroke: '#e5e5e5',
                    Ab: 8,
                    yb: 'butt',
                    zb: 'round',
                    rd: [4, 2]
                }, {
                    stroke: '#bebebe',
                    Ab: 10,
                    yb: 'butt',
                    zb: 'round'
                }]
}
        } else if (/^guojietianqiao/.test(a)) {
 return b === 18 ? [{
                stroke: '#ffffff',
                Ab: 6,
                yb: 'butt',
                zb: 'round',
                rd: [4, 2]
            }, {
                stroke: '#bebebe',
                Ab: 8,
                yb: 'butt',
                zb: 'round'
            }] : [{
                stroke: '#ffffff',
                Ab: 8,
                yb: 'butt',
                zb: 'round',
                rd: [4, 2]
            }, {
                stroke: '#bebebe',
                Ab: 10,
                yb: 'butt',
                zb: 'round'
            }]
}
        return jd[a]
    }
    var md = {
        drawLink: function (a, b, c, e, f) {
            var g = a[1]
            g && (a = a[6],
            this.NN(g, c, e, b, a, f, p),
            this.NN(g, c, e, b, a, f, t))
        },
        NN: function (a, b, c, e, f, g, i) {
            for (var k = 0; k < a.length; k++) {
                var m = a[k][0]
                   var n = g.hj(m, 'line', b)
                if (n && n.length && (!i || n[0].borderWidth)) {
 if (!n[0].xo || ld(n[0].xo, b)) {
 for (var o = a[k][1], q = 0; q < o.length; q++) {
                            var v = o[q][3]
                            g.Nc(v[0], b) && (v['cache' + b] || (v['cache' + b] = g.um(v[1], b, c, f)),
                            v = v['cache' + b],
                            g.M.Vn(e.canvas.id, v, {
                                type: 'polyline',
                                Ub: m,
                                style: n
                            }),
                            this.BV(e, v, n, i, b))
                        }
}
}
            }
        },
        drawSingleTexture: function (a, b, c, e, f) {
            var g = a[1]
            if (g) {
 for (var a = a[6], i = 0; i < g.length; i++) {
                    var k = f.hj(g[i][0], 'line', c)
                    if (k && k.length) {
 for (var m = g[i][1], n = 0; n < m.length; n++) {
                            var o = m[n][11]
                            if (f.Nc(o[0], c)) {
                                var q
                                o['cache' + c] || (o['cache' + c] = f.um(o[1], c, e, a))
                                q = o['cache' + c]
                                o = o[3]
                                o *= Math.pow(2, c - f.b0[c].Lc)
                                this.CV(b, q, k, o, f)
                            }
                        }
}
                }
}
        },
        CV: function (a, b, c, e, f) {
            var g = c[0].xo
               var i = this
            if (kd[g]) { i.Ur(b, e, a, kd[g]) } else {
                var c = f.tK(g)
                   var k = new Image()
                k.onload = function () {
                    kd[g] = k
                    i.Ur(b, e, a, k)
                    k.onload = s
                }

                k.src = c
            }
        },
        Ur: function (a, b, c, e) {
            var f = [a[0], a[1]]
               var g = [a[2], a[3]]
               var a = g[0] - f[0]
               var g = g[1] - f[1]
               var f = [f[0] + a / 2, f[1] + g / 2]
               var i = Math.sqrt(a * a + g * g)
               var b = b / 10
               var a = Math.atan2(g, a)
            c.save()
            c.translate(f[0], f[1])
            c.rotate(Math.PI / 2 + a)
            c.drawImage(e, -b / 2, -i / 2, b, i)
            c.restore()
        },
        BV: function (a, b, c, e, f) {
            c = c[0]
            if (!e && c.xo && ld(c.xo, f)) { this.IV(a, b, c, ld(c.xo, f)) } else {
                a.beginPath()
                a.moveTo(b[0], b[1])
                for (var f = 2, g = b.length; f < g; f += 2) { a.lineTo(b[f], b[f + 1]) }
                c.borderWidth && e ? (a.strokeStyle = c.co,
                a.lineCap = hd[c.iU],
                a.lineJoin = id[1],
                a.lineWidth = c.borderWidth / 2,
                a.stroke()) : e || (a.strokeStyle = c.zw,
                a.lineCap = hd[c.WV],
                a.lineJoin = id[1],
                a.lineWidth = c.$J / 2,
                a.stroke())
            }
        },
        IV: function (a, b, c, e) {
            if (c = e[1]) {
                a.strokeStyle = c.stroke
                a.lineCap = c.yb
                a.lineJoin = c.zb
                a.lineWidth = c.Ab
                a.beginPath()
                a.moveTo(b[0], b[1])
                for (var c = 2, f = b.length; c < f; c += 2) { a.lineTo(b[c], b[c + 1]) }
                a.stroke()
            }
            if (e = e[0]) {
 if (e.rd) { this.zV(a, b, e) } else {
                    a.strokeStyle = e.stroke
                    a.lineCap = e.yb
                    a.lineJoin = e.zb
                    a.lineWidth = e.Ab
                    a.beginPath()
                    a.moveTo(b[0], b[1])
                    c = 2
                    for (f = b.length; c < f; c += 2) { a.lineTo(b[c], b[c + 1]) }
                    a.stroke()
                }
}
        },
        zV: function (a, b, c) {
            a.strokeStyle = c.stroke
            a.lineCap = c.yb
            a.lineJoin = c.zb
            a.lineWidth = c.Ab
            var e = p
               var c = c.rd[0]
            a.beginPath()
            for (var f = 0; f < b.length - 2; f += 2) {
                var g = b[f]
                   var i = b[f + 1]
                   var k = b[f + 2] - g
                   var m = b[f + 3] - i
                   var n = k !== 0 ? m / k : m > 0 ? 1E15 : -1E15
                   var m = Math.sqrt(k * k + m * m)
                   var o = c
                for (a.moveTo(g, i); m >= 0.1;) {
                    o > m && (o = m)
                    var q = Math.sqrt(o * o / (1 + n * n))
                    k < 0 && (q = -q)
                    g += q
                    i += n * q
                    a[e ? 'lineTo' : 'moveTo'](g, i)
                    m -= o
                    e = !e
                }
            }
            a.stroke()
        }
    }
    var nd = 3; var od = 4; var pd = 7; var qd = 8; var rd = 15; var sd = 16; var td = {}; var ud = {}; var vd = {}; var wd; var xd = {
        3: {
            start: 3,
            Lc: 3
        },
        4: {
            start: 4,
            Lc: 5
        },
        5: {
            start: 4,
            Lc: 5
        },
        6: {
            start: 6,
            Lc: 7
        },
        7: {
            start: 6,
            Lc: 7
        },
        8: {
            start: 8,
            Lc: 9
        },
        9: {
            start: 8,
            Lc: 9
        },
        10: {
            start: 10,
            Lc: 10
        },
        11: {
            start: 11,
            Lc: 12
        },
        12: {
            start: 11,
            Lc: 12
        },
        13: {
            start: 11,
            Lc: 12
        },
        14: {
            start: 14,
            Lc: 15
        },
        15: {
            start: 14,
            Lc: 15
        },
        16: {
            start: 16,
            Lc: 17
        },
        17: {
            start: 16,
            Lc: 17
        },
        18: {
            start: 18,
            Lc: 19
        },
        19: {
            start: 18,
            Lc: 19
        },
        20: {
            start: 18,
            Lc: 19
        },
        21: {
            start: 18,
            Lc: 19
        }
    }
    function yd (a) {
        this.M = a
        this.Vc = a.U.devicePixelRatio
        this.b0 = xd
    }
    yd.prototype = {
        bC: function (a, b, c, e, f, g, i, k, m) {
            this.M.tN = {}
            var n = this
            m || (m = 0)
            if (!(z.km(window.qh) ? window.Kp : window.Tt[f]) && m < 100) {
 setTimeout(function () {
                    n.bC(a, b, c, e, f, g, i, k, m + 1)
                }, 100)
} else {
                wd || (wd = k)
                var o = b.getContext('2d')
                   var q = b.parentNode
                q.removeChild(b)
                o.clearRect(0, 0, g, g)
                q.appendChild(b)
                q = this.Vc
                q > 1 && !b._scale && (o.scale(q, q),
                b._scale = p)
                o.fillStyle = this.vM('#F5F3F0')
                window.La[f].bmapLandColor && (o.fillStyle = this.vM(window.La[f].bmapLandColor))
                q = b.style.width
                b.style.width = '0px'
                b.style.width = q
                o.fillRect(0, 0, g, g)
                if (a[0]) {
 for (q = 0; q < a[0].length; q++) {
                        var v = a[0][q]
                        v[0] === pd && dd.drawPoly(v, o, f, g, this)
                    }
}
                this.M.ka() >= 17 ? (n.NJ(a, o, f, g, i, c, e),
                b.jn = p) : setTimeout(function () {
                    if (!b.tG) {
                        n.NJ(a, o, f, g, i, c, e)
                        b.jn = p
                    }
                }, 1)
            }
        },
        NJ: function (a, b, c, e) {
            if (a[0]) {
 for (var f = 0; f < a[0].length; f++) {
                    var g = a[0][f]
                       var i = g[0]
                    i === od ? md.drawLink(g, b, c, e, this) : i === sd ? md.drawLink(g, b, c, e, this) : i === rd ? (dd.drawGaoqingRoadBorder(g, b, c, e, this),
                    dd.drawGaoqingRoadFill(g, b, c, e, this)) : i === 18 ? window.La[c].bmapRoadarrowVisibility !== 'off' && ed.drawArrow(g, b, c, e, Math.pow(2, c - xd[c].Lc), this) : i === qd ? fd.drawHregion(g, b, c, e, this) : i === 19 && md.drawSingleTexture(g, b, c, e, this)
                }
}
        },
        MJ: function (a, b, c, e, f, g, i) {
            var k = this
            i || (i = 0)
            !(z.km(window.qh) ? window.Kp : window.Tt[g]) && i < 100 ? setTimeout(function () {
                k.MJ(a, b, c, e, f, g, i + 1)
            }, 100) : (wd || (wd = b),
            a.PY = gd.parse(a, c, e, this, f))
        },
        hj: function (a, b, c, e) {
            var f = a + '-' + b + '-' + c
            if (e) {
 return td[f] || (td[f] = this.ng(a, b, c, e)),
                td[f]
}
            this.M.tN[f] = this.ng(a, b, c)
            return this.M.tN[f]
        },
        ng: function (a, b, c, e) {
            var f
            f = e || window.bmap_baseFs
            var e = z.km(window.qh) ? window.Kp : window.Tt[c]
               var g = f[2]
            if (b === 'arrow') { return this.EY(g[2]) }
            switch (b) {
            case 'point':
                g = g[0]
                e = e[0] || {}
                break
            case 'pointText':
                g = g[1]
                e = e[1] || {}
                break
            case 'line':
                g = g[3]
                e = e[3] || {}
                break
            case 'polygon':
                g = g[4]
                e = e[4] || {}
                break
            case 'polygon3d':
                g = g[5],
                e = e[5] || {}
            }
            var i = []
               var c = f[1][c - 1][0][a]
            if (!c) { return i }
            for (f = 0; f < c.length; f++) {
                var k = e[c[f]] || g[c[f]]
                if (k) {
                    switch (b) {
                    case 'polygon':
                        k = this.NY(k, a)
                        break
                    case 'line':
                        k = this.JY(k, a)
                        break
                    case 'pointText':
                        k = this.LY(k, a)
                        break
                    case 'point':
                        k = this.KY(k, a)
                        break
                    case 'polygon3d':
                        k = this.MY(k, a)
                    }
                    k.Q4 = c[f]
                    i[i.length] = k
                }
            }
            return i
        },
        LY: function (a, b) {
            return {
                Ub: b,
                dK: this.ug(a[0]),
                UK: this.ug(a[1]),
                t1: this.ug(a[2]),
                fontSize: a[3],
                Rw: a[4],
                fontWeight: a[5],
                fontStyle: a[6],
                iV: a[7]
            }
        },
        KY: function (a, b) {
            return {
                Ub: b,
                Ix: a[0],
                h5: a[1],
                ue: a[2],
                uX: a[3],
                R3: a[4],
                iV: a[5],
                zoom: a[6]
            }
        },
        JY: function (a, b) {
            return {
                Ub: b,
                co: this.ug(a[0]),
                zw: this.ug(a[1]),
                borderWidth: a[2],
                $J: a[3],
                iU: a[4],
                WV: a[5],
                b3: a[6],
                c3: a[7],
                d3: a[8],
                u3: a[9],
                v3: a[10],
                jU: a[11],
                xo: a[12],
                kU: a[13],
                d2: a[14],
                t3: a[15],
                Z2: a[16],
                Q3: a[17],
                v4: a[18]
            }
        },
        NY: function (a, b) {
            return {
                Ub: b,
                zw: this.ug(a[0]),
                co: this.ug(a[1]),
                borderWidth: a[2],
                jU: a[3],
                kU: a[4],
                p5: a[5],
                Y2: a[6],
                U4: a[7],
                V4: this.ug(a[8])
            }
        },
        MY: function (a, b) {
            return {
                Ub: b,
                filter: a[0],
                JM: a[1],
                a3: a[2],
                borderWidth: a[3],
                co: this.ug(a[4]),
                XV: this.ug(a[5]),
                c2: this.ug(a[6]),
                h4: a[7]
            }
        },
        EY: function (a) {
            for (var b in a) {
 return a = a[b],
                {
                    color: this.ug(a[0]),
                    uX: a[1],
                    ue: a[2]
                }
}
        },
        ug: function (a) {
            var b = a
            if (vd[b]) { return vd[b] }
            a >>>= 0
            vd[b] = 'rgba(' + (a & 255) + ',' + (a >> 8 & 255) + ',' + (a >> 16 & 255) + ',' + (a >> 24 & 255) / 255 + ')'
            return vd[b]
        },
        vM: function (a) {
            a = a.replace('#', '')
            a.length === 6 && (a += 'ff')
            for (var b = 'rgba(', c = 0; c < 8; c += 2) { b = c < 6 ? b + (parseInt(a.slice(c, c + 2), 16) + ',') : b + (parseInt(a.slice(c, c + 2), 16) / 255 + ')') }
            return b
        },
        Nc: function (a, b) {
            var c
            ud[a] || (c = a.toString(2),
            c.length < 8 && (c = Array(8 - c.length + 1).join('0') + c),
            ud[a] = c)
            c = ud[a]
            return c[b - xd[b].start] === '1'
        },
        um: function (a, b, c) {
            var e = []
               var b = Math.pow(2, b - xd[b].Lc) / 100
               var f = a[0] * b
               var g = a[1] * b
            e[e.length] = f
            e[e.length] = c - g
            for (var i = 2; i < a.length; i += 2) {
 f += a[i] * b,
                g += a[i + 1] * b,
                e[e.length] = f,
                e[e.length] = c - g
}
            return e
        },
        tK: function (a) {
            var b = a.length % wd.length
               var c = this.wW()
            return wd[b] + a + '.png?v=' + c.cF + '&udt=' + c.YE
        },
        wW: function () {
            if (this.pD) { return this.pD }
            var a = typeof MSV !== 'undefined' ? MSV.J3 : {}
            return this.pD = {
                cF: a.version ? a.version : '001',
                YE: a.G_ ? a.G_ : '20150621'
            }
        }
    }
    Q = z.lang.Zt
    nd = 3
    od = 4
    pd = 7
    qd = 8
    rd = 15
    sd = 16
    function Lc (a, b, c) {
        c = c || {}
        this.M = a
        this.Bv = b
        this.Vc = b.JM
        this.$a = {
            o_: 'na',
            zIndex: 0,
            zN: c.tileUrls || {
                http: ['http://online0.map.bdimg.com/pvd/?qt=vtile', 'http://online1.map.bdimg.com/pvd/?qt=vtile', 'http://online2.map.bdimg.com/pvd/?qt=vtile', 'http://online3.map.bdimg.com/pvd/?qt=vtile', 'http://online4.map.bdimg.com/pvd/?qt=vtile'],
                https: ['https://ss0.bdstatic.com/8bo_dTSlR1gBo1vgoIiO_jowehsv/pvd/?qt=vtile', 'https://ss1.bdstatic.com/8bo_dTSlR1gBo1vgoIiO_jowehsv/pvd/?qt=vtile', 'https://ss2.bdstatic.com/8bo_dTSlR1gBo1vgoIiO_jowehsv/pvd/?qt=vtile', 'https://ss3.bdstatic.com/8bo_dTSlR1gBo1vgoIiO_jowehsv/pvd/?qt=vtile', 'https://ss0.bdstatic.com/8bo_dTSlQ1gBo1vgoIiO_jowehsv/pvd/?qt=vtile']
            },
            oD: c.iconUrls || ['https://ss0.bdstatic.com/8bo_dTSlR1gBo1vgoIiO_jowehsv/sty/map_icons2x/', 'https://ss1.bdstatic.com/8bo_dTSlR1gBo1vgoIiO_jowehsv/sty/map_icons2x/'],
            DE: p
        }
        this.XA = ''
        this.SR = {}
        var c = c.urlOpts || {
            styles: 'pl',
            extdata: 1,
            textimg: 0,
            mesh3d: 0,
            limit: 30
        }; var e
        for (e in c) { c.hasOwnProperty(e) && (this.XA = this.XA + '&' + e + '=' + c[e]) }
        this.Ug = {}
        this.Fr = []
        this.Ls = 0
        this.ex = t
        this.Zw = {}
        a = this.$a.o_
        Yc[a] ? a = Yc[a] : (b = new Zc(a, l),
        a = Yc[a] = b)
        this.Bd = a
        this.M.Bd = this.Bd
    }
    window.VectorIndoorTileLayer = 'VectorIndoorTileLayer'
    fa = Lc.prototype
    fa.xa = function () {
        var a = this.M
           var b = a.oh
        if (!this.Rn) {
            var c = b.bq(this.$a.zIndex)
            c.style.WebkitTransform = 'translate3d(0px, 0px, 0)'
            this.Rn = c
        }
        b.Hg.appendChild(this.Rn)
        b.o3 = c
        if (this.$a.DE) {
            zd(this)
            var e = this
            a.addEventListener('checkvectorclick', function (a) {
                var b
                a: {
                    b = a.offsetX
                    var c = a.offsetY
                       var k = e.Fr.PY
                    if (k) {
 for (var m = 0; m < k.length; m++) {
 for (var n = k[m], o = 0; o < n.length; o++) {
 if (a = n[o],
                                !a.Fs && a.As && b > a.Pf && b < a.ei && c > a.Qf && c < a.fi) {
                                    b = a.As
                                    b = {
                                        type: 9,
                                        name: a.name,
                                        uid: a.uid,
                                        point: {
                                            x: b.$d + b.width / 2,
                                            y: b.ae + 6
                                        }
                                    }
                                    break a
                                }
}
}
}
                    b = s
                }
                b && (a = new Q('onvectorclick'),
                a.k3 = b,
                a.hf = 'base',
                this.dispatchEvent(a))
            })
        }
    }

    function zd (a) {
        var b = a.M
           var c = b.oh
           var e = a.Vc
           var f = b.Hb()
           var g = f.width
           var f = f.height
           var i = O('canvas')
        i.style.cssText = 'position: absolute;left:0;top:0;width:' + g + 'px;height:' + f + 'px;z-index:2;'
        i.width = g * e
        i.height = f * e
        a.ix = i
        a.Qo = i.getContext('2d')
        a.Qo.scale(e, e)
        a.Qo.textBaseline = 'top'
        c.Hg.appendChild(i)
        b.BR = i
    }
    fa.cX = x('Bd')
    fa.update = function (a, b) {
        b = b || {}
        this.$E = b.$E
        if (this.$a.DE && (b.jo && this.jo(),
        b.XZ)) {
            var c = this.Vc
               var e = this.M.Hb()
               var f = e.width
               var e = e.height
               var g = this.ix
               var i = g.style
            i.width = f + 'px'
            i.height = e + 'px'
            g.width = f * c
            g.height = e * c
            this.Qo.scale(c, c)
            this.Qo.textBaseline = 'top'
        }
        if (b.k5) {
            c = this.Rn
            f = 0
            for (e = c.childNodes.length; f < e; f++) { c.childNodes[f].jn = t }
        }
        this.ow = a
        this.To(a)
    }

    fa.To = function (a) {
        this.Fr = []
        var b = this.M
           var c = b.ka()
           var e = b.Pc.bi(b.pe)
           var f = this.Bd.dc(c)
           var e = [Math.round(-e.lng / f), Math.round(e.lat / f)]
           var f = this.Bd.Id(c)
           var g = b.ea.replace(/^TANGRAM_/, '')
           var i = this.Bd.gs(c)
           var b = this.M
           var k = -b.offsetY + b.height / 2
           var m = this.Rn
        m.style.left = -b.offsetX + b.width / 2 + 'px'
        m.style.top = k + 'px'
        this.Ne ? this.Ne.length = 0 : this.Ne = []
        b = 0
        for (k = m.childNodes.length; b < k; b++) {
            var n = m.childNodes[b]
            n.Bq = t
            this.Ne.push(n)
        }
        if (b = this.rm) {
 for (var o in b) { delete b[o] }
} else { this.rm = {} }
        this.Oe ? this.Oe.length = 0 : this.Oe = []
        b = 0
        for (k = a.length; b < k; b++) {
            var n = a[b][0]
               var q = a[b][1]
            o = 0
            for (var v = this.Ne.length; o < v; o++) {
                var w = this.Ne[o]
                if (w.id === g + '_' + n + '_' + q + '_' + i + '_' + c) {
                    w.Bq = p
                    this.rm[w.id] = w
                    break
                }
            }
        }
        b = 0
        for (k = this.Ne.length; b < k; b++) {
 w = this.Ne[b],
            w.Bq || (w.aB = s,
            delete w.aB,
            w.jn = t,
            this.Oe.push(w))
}
        o = []
        v = f * this.Vc
        b = 0
        for (k = a.length; b < k; b++) {
            var n = a[b][0]
               var q = a[b][1]
               var w = n * f + e[0]
               var y = (-1 - q) * f + e[1]
               var A = g + '_' + n + '_' + q + '_' + i + '_' + c
               var B = this.rm[A]
               var C = s
            if (B) {
 C = B.style,
                C.left = w + 'px',
                C.top = y + 'px',
                C.width = f + 'px',
                C.height = f + 'px',
                B.jn ? B.PE && B.PE && this.Fr.push(B.PE) : (B.tG = p,
                B.aB = s,
                delete B.aB,
                o.push([n, q, B]))
} else {
                if (this.Oe.length > 0) {
                    var B = this.Oe.shift()
                       var F = B.getContext('2d')
                    B.getAttribute('width') !== v && (B._scale = t)
                    B.setAttribute('width', v)
                    B.setAttribute('height', v)
                    C = B.style
                    C.width = f + 'px'
                    C.height = f + 'px'
                    F.clearRect(0, 0, v, v)
                } else {
 B = document.createElement('canvas'),
                    C = B.style,
                    C.position = 'absolute',
                    this.$a.backgroundColor && (C.background = this.$a.backgroundColor),
                    C.width = f + 'px',
                    C.height = f + 'px',
                    B.setAttribute('width', v),
                    B.setAttribute('height', v),
                    m.appendChild(B)
}
                B.id = A
                C.left = w + 'px'
                C.top = y + 'px'
                o.push([n, q, B])
            }
            B.style.visibility = ''
        }
        b = 0
        for (k = this.Oe.length; b < k; b++) { this.Oe[b].style.visibility = 'hidden' }
        if (o.length === 0) {
            Ad(this)
            a = this.M.ea.replace(/^TANGRAM_/, '')
            c = this.M.ka()
            e = this.Bd.gs(c)
            f = {}
            for (g = 0; g < this.ow.length; g++) {
 i = this.ow[g],
                i = a + '_' + i[0] + '_' + i[1] + '_' + e + '_' + c,
                this.Ug[i] && (f[i] = this.Ug[i],
                this.$E && this.Bv.cC.bC(this.Ug[i].T_, this.Ug[i].m_, this.Ug[i].Ol, this.Ug[i].Am, this.Ug[i].OD, this.Bd.Id(this.Ug[i].OD), this.Bd.XC(this.Ug[i].OD), this.$a.oD))
}
            this.Ug = f
        } else {
            this.Ls = o.length
            this.ex = t
            c = this.Bd.gs(this.M.ka())
            for (e = 0; e < a.length; e++) { a[e][3] = c }
            for (e = 0; e < o.length; e++) {
 a = o[e][2],
                f = o[e][0],
                g = o[e][1],
                o[e][3] = c,
                a.jn = t,
                a.tG = t,
                Bd(this, f, g, c, a)
}
        }
    }

    function Bd (a, b, c, e, f) {
        var g = b + '_' + c + '_' + e
           var i = a.SR
        if (i[g]) {
            if (i[g].status === 'loading') { return }
        } else {
 i[g] = {
                status: 'init',
                RM: 0
            }
}
        var k = a
           var m = k.M
           var n = []
           var n = D.Nt === '0' ? k.$a.zN.http : k.$a.zN.https
           var o = Math.abs(b + c) % n.length
           var q = 'x=' + b + '&y=' + c + '&z=' + e
           var v = Cd(a.Bv)
           var w = v.cF
           var v = v.YE
           var y = '_' + (b < 0 ? '_' : '') + (c < 0 ? '$' : '') + parseInt(Math.abs(b) + '' + Math.abs(c) + '' + e, 10).toString(36)
           var q = q + a.XA + 'v=' + w + '&udt=' + v + '&fn=window.' + y
           var w = n[o] + '&' + q
           var w = n[o] + '&param=' + window.encodeURIComponent(Kb(q))
        window[y] = function (a) {
            clearTimeout(i[g].Ik)
            i[g] = s
            if (a) {
                var n = m.ka(); var o
                a: {
                    for (o = 0; o < k.ow.length; o++) {
                        var q = k.ow[o]
                        if (q[0] === b && q[1] === c && q[3] === e) {
                            o = p
                            break a
                        }
                    }
                    o = t
                }
                if (o !== t) {
                    o = new Q('updateindoor')
                    o.IndoorCanvas = []
                    o.IndoorCanvas.push({
                        canvasDom: f,
                        data: a,
                        canvasID: f.id,
                        ratio: k.Vc
                    })
                    m.dispatchEvent(o)
                    if (m.U.uo) {
                        if (k.Ug[f.id] = {
                            T_: a,
                            m_: f,
                            Ol: b,
                            Am: c,
                            OD: n
                        },
                        k.Bv.cC.bC(a, f, b, c, n, k.Bd.Id(n), k.Bd.XC(n), k.$a.oD),
                        k.$a.DE) {
                            n = []
                            n.n_ = [b, c, e]
                            if (a[0]) {
 for (o = 0; o < a[0].length; o++) {
 a[0][o][0] === nd && n.push({
                                        vL: a[0][o]
                                    })
}
}
                            if (a[2]) {
 for (o = 0; o < a[2].length; o++) {
 n.push({
                                        bY: a[2][o]
                                    })
}
}
                            f.PE = n
                            k.Fr.push(n)
                            k.ex === t && k.Ls--;
                            (k.Ls === 0 || k.ex === p) && Ad(k)
                        }
                    } else {
 k.Ls--,
                        (k.Ls === 0 || k.ex === p) && Ad(k)
}
                    delete window[y]
                }
            }
        }

        console.log('w >>> ', w)
        pa(w)
        i[g].status = 'loading'
        k = a
        i[g].Ik = setTimeout(function () {
            i[g].RM < 3 ? (i[g].RM++,
            i[g].status = 'init',
            Bd(k, b, c, e, f)) : i[g] = s
        }, 4E3)
    }
    function Ad (a) {
        if (a.ix) {
            var b = a.M
            a.ix.style.left = -b.offsetX + 'px'
            a.ix.style.top = -b.offsetY + 'px'
            var c = new Q('updateindoorlabel')
            c.labelCanvasDom = b.BR
            b.dispatchEvent(c)
            if (b.U.uo) {
                a.jo()
                var c = a.Bd
                   var e = b.ka()
                   var b = c.gs(b.ka())
                a.Bv.cC.MJ(a.Fr, a.$a.oD, a.Qo, c.Id(e), Math.pow(2, e - b), e)
            }
        }
    }
    fa.jo = function () {
        var a = this.M.Hb()
           var b = this.Vc
        this.Qo.clearRect(0, 0, a.width * b, a.height * b)
    }

    fa.remove = function () {
        var a = this.M.oh
        this.Rn && a.Hg.removeChild(this.Rn)
    }

    function Kc (a) {
        this.M = a.map
        this.$e = []
        this.or = {}
        this.JM = this.M.U.devicePixelRatio
        this.cC = new yd(this.M)
        this.xa()
    }
    window.VectorIndoorTileMgr = 'VectorIndoorTileMgr'
    fa = Kc.prototype
    fa.xa = function () {
        var a = this
           var b = this.M
        b.addEventListener('addtilelayer', function (b) {
            a.Me(b.target)
        })
        b.addEventListener('removetilelayer', function (b) {
            a.Tf(b.target)
        })
        setTimeout(function () {
            b.addEventListener('onmoveend', function (b) {
                b.hz !== 'centerAndZoom' && a.update()
            })
            b.addEventListener('onmoving', function () {
                a.update()
            })
            b.addEventListener('onzoomend', function (b) {
                b.hz !== 'centerAndZoom' && a.update({
                    jo: p
                })
            })
            b.addEventListener('centerandzoom', function () {
                a.update({
                    jo: p
                })
            })
            b.addEventListener('onupdatestyles', function () {
                a.update({
                    jo: p,
                    $E: p
                })
                a.M.pf(a.M.Bb())
                setTimeout(function () {
                    a.M.dispatchEvent(new Q('onvectordrawend'))
                }, 10)
            })
        }, 1)
        b.addEventListener('indoor_data_refresh', u())
        b.addEventListener('onresize', function () {
            a.update({
                XZ: p
            })
        })
        a.update()
    }

    fa.Me = function (a) {
        if (a instanceof Lc) {
            for (var b = 0; b < this.$e.length; b++) {
 if (this.$e[b] === a) { return }
}
            this.$e.push(a)
            a.xa()
            this.M.loaded && this.update()
        }
    }

    fa.Tf = function (a) {
        if (a instanceof Lc) {
            for (var b = 0; b < this.$e.length; b++) {
 if (this.$e[b] === a) {
                    this.$e.splice(b, 1)
                    break
                }
}
            a.remove()
        }
    }

    fa.KK = function (a) {
        var b = a.getName()
        if (this.or[b]) { return this.or[b] }
        var c = this.M
           var e = c.ka()
           var f = c.fc
           var g = a.XC(e)
        c.ea.replace(/^TANGRAM_/, '')
        var i = Math.ceil(f.lng / g)
           var k = Math.ceil(f.lat / g)
           var a = a.Id(e)
           var m = [i, k, (f.lng / g - i) * a, (f.lat / g - k) * a]
           var e = m[0] - Math.ceil((c.width / 2 - m[2]) / a)
           var f = m[1] - Math.ceil((c.height / 2 - m[3]) / a)
           var g = m[0] + Math.ceil((c.width / 2 + m[2]) / a)
           var c = m[1] + Math.ceil((c.height / 2 + m[3]) / a)
        this.Be ? this.Be.length = 0 : this.Be = []
        for (a = e; a < g; a++) {
 for (e = f; e < c; e++) { this.Be.push([a, e]) }
}
        this.Be.sort(function (a) {
            return function (b, c) {
                return 0.4 * Math.abs(b[0] - a[0]) + 0.6 * Math.abs(b[1] - a[1]) - (0.4 * Math.abs(c[0] - a[0]) + 0.6 * Math.abs(c[1] - a[1]))
            }
        }([i, k]))
        this.or[b] = this.Be.slice(0)
        return this.or[b]
    }

    function Cd (a) {
        if (a.dF) { return a.dF }
        a.dF = {
            cF: '001',
            YE: Sb('normal')
        }
        return a.dF
    }
    fa.update = function (a) {
        this.or = {}
        for (var b = 0; b < this.$e.length; b++) {
            var c = this.$e[b]
               var e = this.KK(c.Bd)
            c.update(e, a)
        }
    }

    function Dd (a, b, c) {
        this.jd = a
        this.$e = b instanceof Mc ? [b] : b.slice(0)
        c = c || {}
        this.m = {
            r_: c.tips || '',
            KD: '',
            gc: c.minZoom || 4,
            pc: c.maxZoom || 18,
            i3: c.minZoom || 4,
            h3: c.maxZoom || 18,
            dy: 256,
            OE: c.textColor || 'black',
            vC: c.errorImageUrl || '',
            fb: new hb(new J(-21364736, -16023552), new J(23855104, 19431424)),
            Pc: c.projection || new S()
        }
        this.$e.length >= 1 && (this.$e[0].Tv = p)
        z.extend(this.m, c)
    }
    z.extend(Dd.prototype, {
        getName: x('jd'),
        ss: function () {
            return this.m.r_
        },
        H2: function () {
            return this.m.KD
        },
        bX: function () {
            return this.$e[0]
        },
        V2: x('$e'),
        Id: function () {
            return this.m.dy
        },
        aj: function () {
            return this.m.gc
        },
        Xh: function () {
            return this.m.pc
        },
        setMaxZoom: function (a) {
            this.m.pc = a
        },
        cm: function () {
            return this.m.OE
        },
        nk: function () {
            return this.m.Pc
        },
        A2: function () {
            return this.m.vC
        },
        Id: function () {
            return this.m.dy
        },
        dc: function (a) {
            return Math.pow(2, 18 - a)
        },
        PK: function (a) {
            return this.dc(a) * this.Id()
        }
    })
    var Ed = [D.url.proto + D.url.domain.TILE_BASE_URLS[0] + '/it/', D.url.proto + D.url.domain.TILE_BASE_URLS[1] + '/it/', D.url.proto + D.url.domain.TILE_BASE_URLS[2] + '/it/', D.url.proto + D.url.domain.TILE_BASE_URLS[3] + '/it/', D.url.proto + D.url.domain.TILE_BASE_URLS[4] + '/it/']
       var Fd = [D.url.proto + D.url.domain.TILE_ONLINE_URLS[0] + '/tile/', D.url.proto + D.url.domain.TILE_ONLINE_URLS[1] + '/tile/', D.url.proto + D.url.domain.TILE_ONLINE_URLS[2] + '/tile/', D.url.proto + D.url.domain.TILE_ONLINE_URLS[3] + '/tile/', D.url.proto + D.url.domain.TILE_ONLINE_URLS[4] + '/tile/']
       var Gd = {
        dark: 'dl',
        light: 'll',
        normal: 'pl'
    }
       var Hd = new Mc()
    Hd.RZ = p
    Hd.getTilesUrl = function (a, b, c) {
        /* var e = a.x
          , a = a.y
          , f = Sb("normal")
          , g = 1
          , c = Gd[c];
        this.map.Yw() && (g = 2);
        e = this.map.oh.Uv(e, b).Ol;
        return (Fd[Math.abs(e + a) % Fd.length] + "?qt=vtile&x=" + (e + "").replace(/-/gi, "M") + "&y=" + (a + "").replace(/-/gi, "M") + "&z=" + b + "&styles=" + c + "&scaler=" + g + (6 == z.ga.ma ? "&color_dep=32&colors=50" : "") + "&udt=" + f).replace(/-(\d+)/gi, "M$1")
        */
       var x = a.x; var y = a.y; var e = 1; var z = a
       return bmapcfg.tiles_dir + '/' + b + '/' + x + '/' + y + bmapcfg.imgext
    }

    var Pa = new Dd('\u5730\u56fe', Hd, {
        tips: '\u663e\u793a\u666e\u901a\u5730\u56fe',
        maxZoom: 19
    })
       var Id = new Mc()
    Id.yN = [D.url.proto + D.url.domain.TIlE_PERSPECT_URLS[0] + '/resource/mappic/', D.url.proto + D.url.domain.TIlE_PERSPECT_URLS[1] + '/resource/mappic/', D.url.proto + D.url.domain.TIlE_PERSPECT_URLS[2] + '/resource/mappic/', D.url.proto + D.url.domain.TIlE_PERSPECT_URLS[3] + '/resource/mappic/']
    Id.getTilesUrl = function (a, b) {
        var c = a.x
           var e = a.y
           var f = 256 * Math.pow(2, 20 - b)
           var e = Math.round((9998336 - f * e) / f) - 1
        return url = this.yN[Math.abs(c + e) % this.yN.length] + this.map.Vb + '/' + this.map.$v + '/3/lv' + (21 - b) + '/' + c + ',' + e + '.jpg'
    }

    var Sa = new Dd('\u4e09\u7ef4', Id, {
        tips: '\u663e\u793a\u4e09\u7ef4\u5730\u56fe',
        minZoom: 15,
        maxZoom: 20,
        textColor: 'white',
        projection: new jb()
    })
    Sa.dc = function (a) {
        return Math.pow(2, 20 - a)
    }

    Sa.ik = function (a) {
        if (!a) { return '' }
        var b = H.vB; var c
        for (c in b) {
 if (a.search(c) > -1) { return b[c].Dx }
}
        return ''
    }

    Sa.mK = function (a) {
        return {
            bj: 2,
            gz: 1,
            sz: 14,
            sh: 4
        }[a]
    }

    var Jd = new Mc({
        Tv: p
    })
    Jd.getTilesUrl = function (a, b) {
        var c = a.x
           var e = a.y
        return (Ed[Math.abs(c + e) % Ed.length] + 'u=x=' + c + ';y=' + e + ';z=' + b + ';v=009;type=sate&fm=46&udt=' + Sb('satellite')).replace(/-(\d+)/gi, 'M$1')
    }

    var ab = new Dd('\u536b\u661f', Jd, {
        tips: '\u663e\u793a\u536b\u661f\u5f71\u50cf',
        minZoom: 4,
        maxZoom: 19,
        textColor: 'white'
    })
       var Kd = new Mc({
        transparentPng: p
    })
    Kd.getTilesUrl = function (a, b) {
        var c = a.x
           var e = a.y
           var f = Sb('satelliteStreet')
        return (Fd[Math.abs(c + e) % Fd.length] + '?qt=vtile&x=' + (c + '').replace(/-/gi, 'M') + '&y=' + (e + '').replace(/-/gi, 'M') + '&z=' + b + '&styles=sl' + (z.ga.ma == 6 ? '&color_dep=32&colors=50' : '') + '&udt=' + f).replace(/-(\d+)/gi, 'M$1')
    }

    var Va = new Dd('\u6df7\u5408', [Jd, Kd], {
        tips: '\u663e\u793a\u5e26\u6709\u8857\u9053\u7684\u536b\u661f\u5f71\u50cf',
        labelText: '\u8def\u7f51',
        minZoom: 4,
        maxZoom: 19,
        textColor: 'white'
    })
    var Ld = 1
       var W = {}
    window.f0 = W
    function X (a, b) {
        z.lang.Ga.call(this)
        this.yd = {}
        this.Em(a)
        b = b || {}
        b.pa = b.renderOptions || {}
        this.m = {
            pa: {
                Oa: b.pa.panel || s,
                map: b.pa.map || s,
                Sg: b.pa.autoViewport || p,
                gt: b.pa.selectFirstResult,
                ys: b.pa.highlightMode,
                Wb: b.pa.enableDragging || t
            },
            Vs: b.onSearchComplete || u(),
            lM: b.onMarkersSet || u(),
            kM: b.onInfoHtmlSet || u(),
            nM: b.onResultsHtmlSet || u(),
            jM: b.onGetBusListComplete || u(),
            iM: b.onGetBusLineComplete || u(),
            gM: b.onBusListHtmlSet || u(),
            fM: b.onBusLineHtmlSet || u(),
            XD: b.onPolylinesSet || u(),
            bp: b.reqFrom || ''
        }
        this.m.pa.Sg = typeof b !== 'undefined' && typeof b.renderOptions !== 'undefined' && typeof b.renderOptions.autoViewport !== 'undefined' ? b.renderOptions.autoViewport : p
        this.m.pa.Oa = z.Ec(this.m.pa.Oa)
    }
    z.wa(X, z.lang.Ga)
    z.extend(X.prototype, {
        getResults: function () {
            return this.Gc ? this.yi : this.la
        },
        enableAutoViewport: function () {
            this.m.pa.Sg = p
        },
        disableAutoViewport: function () {
            this.m.pa.Sg = t
        },
        Em: function (a) {
            a && (this.yd.src = a)
        },
        ot: function (a) {
            this.m.Vs = a || u()
        },
        setMarkersSetCallback: function (a) {
            this.m.lM = a || u()
        },
        setPolylinesSetCallback: function (a) {
            this.m.XD = a || u()
        },
        setInfoHtmlSetCallback: function (a) {
            this.m.kM = a || u()
        },
        setResultsHtmlSetCallback: function (a) {
            this.m.nM = a || u()
        },
        am: x('Ke')
    })
    var Md = {
        GF: D.Cd,
        nb: function (a, b, c, e, f) {
            this.YY(b)
            var g = (1E5 * Math.random()).toFixed(0)

            /* var cbk_gs = [
                '59534','45851','14430','13344', '45052', '51773', '99694', '28280', '84915'
            ]
            for (var cbk_i=0; cbk_i< cbk_gs.length; cbk_i++){
                D._rd["_cbk" + cbk_gs[cbk_i]] = function(b) {
                    b.result && b.result.error && 202 === b.result.error ? alert("\u8be5AK\u56e0\u4e3a\u6076\u610f\u884c\u4e3a\u5df2\u7ecf\u88ab\u7ba1\u7406\u5458\u5c01\u7981\uff01") : (c = c || {},
                    a && a(b, c),
                    delete D._rd["_cbk" + cbk_gs[cbk_i]])
                }

            }
            pa('./js/cbk_g/all.j.js') */

            D._rd['_cbk' + g] = function (b) {
                b.result && b.result.error && b.result.error === 202 ? alert('\u8be5AK\u56e0\u4e3a\u6076\u610f\u884c\u4e3a\u5df2\u7ecf\u88ab\u7ba1\u7406\u5458\u5c01\u7981\uff01') : (c = c || {},
                a && a(b, c),
                delete D._rd['_cbk' + g])
            }

            e = e || ''
            b = c && c.K_ ? Gb(b, encodeURI) : Gb(b, encodeURIComponent)
            this.GF = c && c.WJ ? c.PM ? c.PM : D.Uo : D.Cd
            e = this.GF + e + '?' + b + '&ie=utf-8&oue=1&fromproduct=jsapi'
            f || (e += '&res=api')
            e = e + ('&callback=BMap._rd._cbk' + g) + ('&ak=' + qa)
            console.log('e===> ', e)
            pa(e)
        },
        YY: function (a) {
            if (a.qt) {
                var b = ''
                switch (a.qt) {
                case 'bt':
                    b = 'z_qt|bt'
                    break
                case 'nav':
                    b = 'z_qt|nav'
                    break
                case 'walk':
                    b = 'z_qt|walk'
                    break
                case 'bse':
                    b = 'z_qt|bse'
                    break
                case 'nse':
                    b = 'z_qt|nse'
                    break
                case 'drag':
                    b = 'z_qt|drag'
                }
                b !== '' && D.alog('cus.fire', 'count', b)
            }
        }
    }
    window.t0 = Md
    D._rd = {}
    var db = {}
    window.s0 = db
    db.LM = function (a) {
        a = a.replace(/<\/?[^>]*>/g, '')
        return a = a.replace(/[ | ]* /g, ' ')
    }

    db.FY = function (a) {
        return a.replace(/([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0|[1-9]\d*),([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0|[1-9]\d*)(,)/g, '$1,$2;')
    }

    db.GY = function (a, b) {
        return a.replace(RegExp('(((-?\\d+)(\\.\\d+)?),((-?\\d+)(\\.\\d+)?);)(((-?\\d+)(\\.\\d+)?),((-?\\d+)(\\.\\d+)?);){' + b + '}', 'ig'), '$1')
    }

    var Nd = 2
       var Od = 6
       var Pd = 8
       var Qd = 2
       var Rd = 3
       var Sd = 6
       var Td = 0
       var Ud = 'bt'
       var Vd = 'nav'
       var Wd = 'walk'
       var Xd = 'bl'
       var Yd = 'bsl'
       var Zd = 'ride'
       var $d = 15
       var ae = 18
    D.I = window.Instance = z.lang.Mc
    function be (a, b, c) {
        z.lang.Ga.call(this)
        if (a) {
            this.Ya = typeof a === 'object' ? a : z.Ec(a)
            this.page = 1
            this.Jd = 100
            this.WI = 'pg'
            this.Sf = 4
            this.eJ = b
            this.update = p
            a = {
                page: 1,
                a5: 100,
                Jd: 100,
                Sf: 4,
                WI: 'pg',
                update: p
            }
            c || (c = a)
            for (var e in c) { typeof c[e] !== 'undefined' && (this[e] = c[e]) }
            this.za()
        }
    }
    z.extend(be.prototype, {
        za: function () {
            this.xa()
        },
        xa: function () {
            this.yU()
            this.Ya.innerHTML = this.XU()
        },
        yU: function () {
            isNaN(parseInt(this.page)) && (this.page = 1)
            isNaN(parseInt(this.Jd)) && (this.Jd = 1)
            this.page < 1 && (this.page = 1)
            this.Jd < 1 && (this.Jd = 1)
            this.page > this.Jd && (this.page = this.Jd)
            this.page = parseInt(this.page)
            this.Jd = parseInt(this.Jd)
        },
        M2: function () {
            location.search.match(RegExp('[?&]?' + this.WI + '=([^&]*)[&$]?', 'gi'))
            this.page = RegExp.$1
        },
        XU: function () {
            var a = []
               var b = this.page - 1
               var c = this.page + 1
            a.push('<p style="margin:0;padding:0;white-space:nowrap">')
            if (!(b < 1)) {
                if (this.page >= this.Sf) {
                    var e
                    a.push('<span style="margin-right:3px"><a style="color:#7777cc" href="javascript:void(0)" onclick="{temp1}">\u9996\u9875</a></span>'.replace('{temp1}', "BMap.I('" + this.ea + "').toPage(1);"))
                }
                a.push('<span style="margin-right:3px"><a style="color:#7777cc" href="javascript:void(0)" onclick="{temp2}">\u4e0a\u4e00\u9875</a></span>'.replace('{temp2}', "BMap.I('" + this.ea + "').toPage(" + b + ');'))
            }
            if (this.page < this.Sf) {
 e = this.page % this.Sf == 0 ? this.page - this.Sf - 1 : this.page - this.page % this.Sf + 1,
                b = e + this.Sf - 1
} else {
                e = Math.floor(this.Sf / 2)
                var f = this.Sf % 2 - 1
                   var b = this.Jd > this.page + e ? this.page + e : this.Jd
                e = this.page - e - f
            }
            this.page > this.Jd - this.Sf && this.page >= this.Sf && (e = this.Jd - this.Sf + 1,
            b = this.Jd)
            for (f = e; f <= b; f++) {
 f > 0 && (f == this.page ? a.push('<span style="margin-right:3px">' + f + '</span>') : f >= 1 && f <= this.Jd && (e = '<span><a style="color:#7777cc;margin-right:3px" href="javascript:void(0)" onclick="{temp3}">[' + f + ']</a></span>',
                a.push(e.replace('{temp3}', "BMap.I('" + this.ea + "').toPage(" + f + ');'))))
}
            c > this.Jd || a.push('<span><a style="color:#7777cc" href="javascript:void(0)" onclick="{temp4}">\u4e0b\u4e00\u9875</a></span>'.replace('{temp4}', "BMap.I('" + this.ea + "').toPage(" + c + ');'))
            a.push('</p>')
            return a.join('')
        },
        toPage: function (a) {
            a = a || 1
            typeof this.eJ === 'function' && (this.eJ(a),
            this.page = a)
            this.update && this.za()
        }
    })
    function fb (a, b) {
        X.call(this, a, b)
        b = b || {}
        b.renderOptions = b.renderOptions || {}
        this.kp(b.pageCapacity)
        typeof b.renderOptions.selectFirstResult !== 'undefined' && !b.renderOptions.selectFirstResult ? this.VB() : this.nC()
        this.Ba = []
        this.sf = []
        this.ob = -1
        this.Ra = []
        var c = this
        K.load('local', function () {
            c.Ny()
        }, p)
    }
    z.wa(fb, X, 'LocalSearch')
    fb.Dp = 10
    fb.o0 = 1
    fb.Um = 100
    fb.wF = 2E3
    fb.EF = 1E5
    z.extend(fb.prototype, {
        search: function (a, b) {
            this.Ra.push({
                method: 'search',
                arguments: [a, b]
            })
        },
        Bm: function (a, b, c) {
            this.Ra.push({
                method: 'searchInBounds',
                arguments: [a, b, c]
            })
        },
        hp: function (a, b, c, e) {
            this.Ra.push({
                method: 'searchNearby',
                arguments: [a, b, c, e]
            })
        },
        Pe: function () {
            delete this.Ma
            delete this.Ke
            delete this.la
            delete this.ya
            this.ob = -1
            this.Xa()
            this.m.pa.Oa && (this.m.pa.Oa.innerHTML = '')
        },
        dm: u(),
        nC: function () {
            this.m.pa.gt = p
        },
        VB: function () {
            this.m.pa.gt = t
        },
        kp: function (a) {
            this.m.vk = typeof a === 'number' && !isNaN(a) ? a < 1 ? fb.Dp : a > fb.Um ? fb.Dp : a : fb.Dp
        },
        kf: function () {
            return this.m.vk
        },
        toString: ea('LocalSearch')
    })
    var ce = fb.prototype
    U(ce, {
        clearResults: ce.Pe,
        setPageCapacity: ce.kp,
        getPageCapacity: ce.kf,
        gotoPage: ce.dm,
        searchNearby: ce.hp,
        searchInBounds: ce.Bm,
        search: ce.search,
        enableFirstResultSelection: ce.nC,
        disableFirstResultSelection: ce.VB
    })
    function de (a, b) {
        X.call(this, a, b)
    }
    z.wa(de, X, 'BaseRoute')
    z.extend(de.prototype, {
        Pe: u()
    })
    function ee (a, b) {
        X.call(this, a, b)
        b = b || {}
        this.nt(b.policy)
        this.cN(b.intercityPolicy)
        this.lN(b.transitTypePolicy)
        this.kp(b.pageCapacity)
        this.Eb = Ud
        this.Jp = Ld
        this.Ba = []
        this.ob = -1
        this.m.mn = b.enableTraffic || t
        this.Ra = []
        var c = this
        K.load('route', function () {
            c.Qd()
        })
    }
    ee.Um = 100
    ee.vO = [0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1]
    ee.wO = [0, 3, 4, 0, 0, 0, 5]
    z.wa(ee, de, 'TransitRoute')
    z.extend(ee.prototype, {
        nt: function (a) {
            this.m.ge = a >= 0 && a <= 5 ? a : 0
        },
        cN: function (a) {
            this.m.jm = a >= 0 && a <= 2 ? a : 0
        },
        lN: function (a) {
            this.m.Km = a >= 0 && a <= 2 ? a : 0
        },
        Pz: function (a, b) {
            this.Ra.push({
                method: '_internalSearch',
                arguments: [a, b]
            })
        },
        search: function (a, b) {
            this.Ra.push({
                method: 'search',
                arguments: [a, b]
            })
        },
        kp: function (a) {
            if (typeof a === 'string' && (a = parseInt(a, 10),
            isNaN(a))) {
                this.m.vk = ee.Um
                return
            }
            this.m.vk = typeof a !== 'number' ? ee.Um : a >= 1 && a <= ee.Um ? Math.round(a) : ee.Um
        },
        toString: ea('TransitRoute'),
        e1: function (a) {
            return a.replace(/\(.*\)/, '')
        }
    })
    var fe = ee.prototype
    U(fe, {
        _internalSearch: fe.Pz
    })
    function ge (a, b) {
        X.call(this, a, b)
        this.Ba = []
        this.ob = -1
        this.Ra = []
        var c = this
           var e = this.m.pa
        e.ys !== 1 && e.ys !== 2 && (e.ys = 1)
        this.yu = this.m.pa.Wb ? p : t
        K.load('route', function () {
            c.Qd()
        })
        this.wD && this.wD()
    }
    ge.KO = ' \u73af\u5c9b \u65e0\u5c5e\u6027\u9053\u8def \u4e3b\u8def \u9ad8\u901f\u8fde\u63a5\u8def \u4ea4\u53c9\u70b9\u5185\u8def\u6bb5 \u8fde\u63a5\u9053\u8def \u505c\u8f66\u573a\u5185\u90e8\u9053\u8def \u670d\u52a1\u533a\u5185\u90e8\u9053\u8def \u6865 \u6b65\u884c\u8857 \u8f85\u8def \u531d\u9053 \u5168\u5c01\u95ed\u9053\u8def \u672a\u5b9a\u4e49\u4ea4\u901a\u533a\u57df POI\u8fde\u63a5\u8def \u96a7\u9053 \u6b65\u884c\u9053 \u516c\u4ea4\u4e13\u7528\u9053 \u63d0\u524d\u53f3\u8f6c\u9053'.split(' ')
    z.wa(ge, de, 'DWRoute')
    z.extend(ge.prototype, {
        search: function (a, b, c) {
            this.Ra.push({
                method: 'search',
                arguments: [a, b, c]
            })
        }
    })
    function he (a, b) {
        ge.call(this, a, b)
        b = b || {}
        this.m.mn = b.enableTraffic || t
        this.nt(b.policy)
        this.Eb = Vd
        this.Jp = Rd
    }
    z.wa(he, ge, 'DrivingRoute')
    he.prototype.nt = function (a) {
        this.m.ge = a >= 0 && a <= 5 ? a : 0
    }

    function ie (a, b) {
        ge.call(this, a, b)
        this.Eb = Wd
        this.Jp = Qd
        this.yu = t
    }
    z.wa(ie, ge, 'WalkingRoute')
    function je (a, b) {
        ge.call(this, a, b)
        this.Eb = Zd
        this.Jp = Sd
        this.yu = t
    }
    z.wa(je, ge, 'RidingRoute')
    function ke (a, b) {
        z.lang.Ga.call(this)
        this.Of = []
        this.wk = []
        this.m = b
        this.mj = a
        this.map = this.m.pa.map || s
        this.XM = this.m.XM
        this.Cb = s
        this.ck = 0
        this.KE = ''
        this.gf = 1
        this.uC = ''
        this.cp = [0, 0, 0, 0, 0, 0, 0]
        this.IL = []
        this.Dr = [1, 1, 1, 1, 1, 1, 1]
        this.GN = [1, 1, 1, 1, 1, 1, 1]
        this.dp = [0, 0, 0, 0, 0, 0, 0]
        this.zm = [0, 0, 0, 0, 0, 0, 0]
        this.Kb = [{
            B: '',
            Dd: 0,
            Lm: 0,
            x: 0,
            y: 0,
            ra: -1
        }, {
            B: '',
            Dd: 0,
            Lm: 0,
            x: 0,
            y: 0,
            ra: -1
        }, {
            B: '',
            Dd: 0,
            Lm: 0,
            x: 0,
            y: 0,
            ra: -1
        }, {
            B: '',
            Dd: 0,
            Lm: 0,
            x: 0,
            y: 0,
            ra: -1
        }, {
            B: '',
            Dd: 0,
            Lm: 0,
            x: 0,
            y: 0,
            ra: -1
        }, {
            B: '',
            Dd: 0,
            Lm: 0,
            x: 0,
            y: 0,
            ra: -1
        }, {
            B: '',
            Dd: 0,
            Lm: 0,
            x: 0,
            y: 0,
            ra: -1
        }]
        this.Qh = -1
        this.It = []
        this.WE = []
        K.load('route', u())
    }
    z.lang.wa(ke, z.lang.Ga, 'RouteAddr')
    var le = navigator.userAgent;
    /ipad|iphone|ipod|iph/i.test(le)
    var ne = /android/i.test(le)
    function oe (a) {
        this.Te = a || {}
    }
    z.extend(oe.prototype, {
        WM: function (a, b, c) {
            var e = this
            K.load('route', function () {
                e.Qd(a, b, c)
            })
        }
    })
    function pe (a) {
        this.m = {}
        z.extend(this.m, a)
        this.Ra = []
        var b = this
        K.load('othersearch', function () {
            b.Qd()
        })
    }
    z.wa(pe, z.lang.Ga, 'Geocoder')
    z.extend(pe.prototype, {
        $l: function (a, b, c) {
            this.Ra.push({
                method: 'getPoint',
                arguments: [a, b, c]
            })
        },
        Yl: function (a, b, c) {
            this.Ra.push({
                method: 'getLocation',
                arguments: [a, b, c]
            })
        },
        toString: ea('Geocoder')
    })
    var qe = pe.prototype
    U(qe, {
        getPoint: qe.$l,
        getLocation: qe.Yl
    })
    function Geolocation (a) {
        a = a || {}
        this.U = {
            timeout: a.timeout || 1E4,
            maximumAge: a.maximumAge || 6E5,
            enableHighAccuracy: a.enableHighAccuracy || t,
            si: a.SDKLocation || t
        }
        this.ne = []
        var b = this
        K.load('othersearch', function () {
            for (var a = 0, e; e = b.ne[a]; a++) { b[e.method].apply(b, e.arguments) }
        })
    }
    z.extend(Geolocation.prototype, {
        getCurrentPosition: function (a, b) {
            this.ne.push({
                method: 'getCurrentPosition',
                arguments: arguments
            })
        },
        getStatus: function () {
            return Nd
        },
        enableSDKLocation: function () {
            I() && (this.U.si = p)
        },
        disableSDKLocation: function () {
            this.U.si = t
        }
    })
    function ue (a) {
        a = a || {}
        a.pa = a.renderOptions || {}
        this.m = {
            pa: {
                map: a.pa.map || s
            }
        }
        this.Ra = []
        var b = this
        K.load('othersearch', function () {
            b.Qd()
        })
    }
    z.wa(ue, z.lang.Ga, 'LocalCity')
    z.extend(ue.prototype, {
        get: function (a) {
            this.Ra.push({
                method: 'get',
                arguments: [a]
            })
        },
        toString: ea('LocalCity')
    })
    function ve () {
        this.Ra = []
        var a = this
        K.load('othersearch', function () {
            a.Qd()
        })
    }
    z.wa(ve, z.lang.Ga, 'Boundary')
    z.extend(ve.prototype, {
        get: function (a, b) {
            this.Ra.push({
                method: 'get',
                arguments: [a, b]
            })
        },
        toString: ea('Boundary')
    })
    function we (a, b) {
        X.call(this, a, b)
        this.HO = Xd
        this.JO = $d
        this.GO = Yd
        this.IO = ae
        this.Ra = []
        var c = this
        K.load('buslinesearch', function () {
            c.Qd()
        })
    }
    we.Mu = H.sa + 'iw_plus.gif'
    we.AR = H.sa + 'iw_minus.gif'
    we.rT = H.sa + 'stop_icon.png'
    z.wa(we, X)
    z.extend(we.prototype, {
        getBusList: function (a) {
            this.Ra.push({
                method: 'getBusList',
                arguments: [a]
            })
        },
        getBusLine: function (a) {
            this.Ra.push({
                method: 'getBusLine',
                arguments: [a]
            })
        },
        setGetBusListCompleteCallback: function (a) {
            this.m.jM = a || u()
        },
        setGetBusLineCompleteCallback: function (a) {
            this.m.iM = a || u()
        },
        setBusListHtmlSetCallback: function (a) {
            this.m.gM = a || u()
        },
        setBusLineHtmlSetCallback: function (a) {
            this.m.fM = a || u()
        },
        setPolylinesSetCallback: function (a) {
            this.m.XD = a || u()
        }
    })
    function xe (a) {
        X.call(this, a)
        a = a || {}
        this.$a = {
            input: a.input || s,
            oB: a.baseDom || s,
            types: a.types || [],
            Vs: a.onSearchComplete || u()
        }
        this.yd.src = a.location || '\u5168\u56fd'
        this.Pi = ''
        this.gg = s
        this.dH = ''
        this.Fi()
        Ta(Ka)
        var b = this
        K.load('autocomplete', function () {
            b.Qd()
        })
    }
    z.wa(xe, X, 'Autocomplete')
    z.extend(xe.prototype, {
        Fi: u(),
        show: u(),
        aa: u(),
        AE: function (a) {
            this.$a.types = a
        },
        Em: function (a) {
            this.yd.src = a
        },
        search: ca('Pi'),
        Px: ca('dH'),
        ot: function (a) {
            this.$a.Vs = a
        }
    })
    var Wa
    function Ra (a, b) {
        function c () {
            f.m.visible ? (f.Ie === 'inter' && f.m.haveBreakId && f.m.indoorExitControl === p ? z.R.show(f.Iz) : z.R.aa(f.Iz),
            this.m.closeControl && this.wf && this.M && this.M.Ua() === this.P ? z.R.show(f.wf) : z.R.aa(f.wf),
            this.m.forceCloseControl && z.R.show(f.wf)) : (z.R.aa(f.wf),
            z.R.aa(f.Iz))
        }
        this.P = typeof a === 'string' ? z.da(a) : a
        this.ea = ye++
        this.m = {
            enableScrollWheelZoom: p,
            panoramaRenderer: 'flash',
            swfSrc: D.Yh('main_domain_nocdn', 'res/swf/') + 'APILoader.swf',
            visible: p,
            indoorExitControl: p,
            indoorFloorControl: t,
            linksControl: p,
            clickOnRoad: p,
            navigationControl: p,
            closeControl: p,
            indoorSceneSwitchControl: p,
            albumsControl: t,
            albumsControlOptions: {},
            copyrightControlOptions: {},
            forceCloseControl: t,
            haveBreakId: t
        }
        var b = b || {}; var e
        for (e in b) { this.m[e] = b[e] }
        b.closeControl === p && (this.m.forceCloseControl = p)
        b.useWebGL === t && Qa(t)
        this.Ha = {
            heading: 0,
            pitch: 0
        }
        this.yn = []
        this.Lb = this.bb = s
        this.Rj = this.wq()
        this.Ba = []
        this.Kc = 1
        this.Ie = this.ZR = this.Vk = ''
        this.He = {}
        this.If = s
        this.Lg = []
        this.Oq = []
        this.Rj == 'cvsRender' || Qa() ? (this.Jj = 90,
        this.Lj = -90) : this.Rj == 'cssRender' && (this.Jj = 45,
        this.Lj = -45)
        this.Sq = t
        var f = this
        this.zn = function () {
            this.Rj === 'flashRender' ? K.load('panoramaflash', function () {
                f.Fi()
            }, p) : K.load('panorama', function () {
                f.jb()
            }, p)
            b.hf == 'api' ? Ta(Ga) : Ta(Ha)
            this.zn = u()
        }

        this.m.LR !== p && (this.zn(),
        D.Qp('cus.fire', 'count', 'z_loadpanoramacount'))
        this.CS(this.P)
        this.addEventListener('id_changed', function () {
            Ta(Fa, {
                from: b.hf
            })
        })
        this.UO()
        this.addEventListener('indoorexit_options_changed', c)
        this.addEventListener('scene_type_changed', c)
        this.addEventListener('onclose_options_changed', c)
        this.addEventListener('onvisible_changed', c)
    }
    var ze = 4
       var Ae = 1
       var ye = 0
    z.lang.wa(Ra, z.lang.Ga, 'Panorama')
    z.extend(Ra.prototype, {
        UO: function () {
            var a = this
               var b = this.wf = O('div')
            b.className = 'pano_close'
            b.style.cssText = 'z-index: 1201;display: none'
            b.title = '\u9000\u51fa\u5168\u666f'
            b.onclick = function () {
                a.aa()
            }

            this.P.appendChild(b)
            var c = this.Iz = O('a')
            c.className = 'pano_pc_indoor_exit'
            c.style.cssText = 'z-index: 1201;display: none'
            c.innerHTML = '<span style="float:right;margin-right:12px;">\u51fa\u53e3</span>'
            c.title = '\u9000\u51fa\u5ba4\u5185\u666f'
            c.onclick = function () {
                a.wo()
            }

            this.P.appendChild(c)
            window.ActiveXObject && !document.addEventListener && (b.style.backgroundColor = 'rgb(37,37,37)',
            c.style.backgroundColor = 'rgb(37,37,37)')
        },
        wo: u(),
        CS: function (a) {
            var b, c
            b = a.style
            c = Ya(a).position
            c != 'absolute' && c != 'relative' && (b.position = 'relative',
            b.zIndex = 0)
            if (c === 'absolute' || c === 'relative') {
 if (a = Ya(a).zIndex,
                !a || a === 'auto') { b.zIndex = 0 }
}
        },
        DW: x('yn'),
        Xb: x('bb'),
        dX: x('vv'),
        kN: x('vv'),
        ja: x('Lb'),
        Ia: x('Ha'),
        ka: x('Kc'),
        $i: x('Vk'),
        O2: function () {
            return this.$0 || []
        },
        J2: x('ZR'),
        rs: x('Ie'),
        Rx: function (a) {
            a !== this.Ie && (this.Ie = a,
            this.dispatchEvent(new Q('onscene_type_changed')))
        },
        Cc: function (a, b, c) {
            typeof b === 'object' && (c = b,
            b = l)
            a != this.bb && (this.fl = this.bb,
            this.gl = this.Lb,
            this.bb = a,
            this.Ie = b || 'street',
            this.Lb = s,
            c && c.pov && this.od(c.pov))
        },
        ua: function (a) {
            a.oc(this.Lb) || (this.fl = this.bb,
            this.gl = this.Lb,
            this.Lb = a,
            this.bb = s)
        },
        od: function (a) {
            a && (this.Ha = a,
            a = this.Ha.pitch,
            a > this.Jj ? a = this.Jj : a < this.Lj && (a = this.Lj),
            this.Sq = p,
            this.Ha.pitch = a)
        },
        MZ: function (a, b) {
            this.Lj = a >= 0 ? 0 : a
            this.Jj = b <= 0 ? 0 : b
        },
        Qc: function (a) {
            a != this.Kc && (a > ze && (a = ze),
            a < Ae && (a = Ae),
            a != this.Kc && (this.Kc = a),
            this.Rj === 'cssRender' && this.od(this.Ha))
        },
        KA: function () {
            if (this.M) {
 for (var a = this.M.Mw(), b = 0; b < a.length; b++) { (a[b] instanceof V || a[b] instanceof uc) && a[b].point && this.Ba.push(a[b]) }
}
        },
        xE: ca('M'),
        mt: function (a) {
            this.If = a || 'none'
        },
        Bk: function (a) {
            for (var b in a) {
                if (typeof a[b] === 'object') {
 for (var c in a[b]) { this.m[b][c] = a[b][c] }
} else { this.m[b] = a[b] }
                a.closeControl === p && (this.m.forceCloseControl = p)
                a.closeControl === t && (this.m.forceCloseControl = t)
                switch (b) {
                case 'linksControl':
                    this.dispatchEvent(new Q('onlinks_visible_changed'))
                    break
                case 'clickOnRoad':
                    this.dispatchEvent(new Q('onclickonroad_changed'))
                    break
                case 'navigationControl':
                    this.dispatchEvent(new Q('onnavigation_visible_changed'))
                    break
                case 'indoorSceneSwitchControl':
                    this.dispatchEvent(new Q('onindoor_default_switch_mode_changed'))
                    break
                case 'albumsControl':
                    this.dispatchEvent(new Q('onalbums_visible_changed'))
                    break
                case 'albumsControlOptions':
                    this.dispatchEvent(new Q('onalbums_options_changed'))
                    break
                case 'copyrightControlOptions':
                    this.dispatchEvent(new Q('oncopyright_options_changed'))
                    break
                case 'closeControl':
                    this.dispatchEvent(new Q('onclose_options_changed'))
                    break
                case 'indoorExitControl':
                    this.dispatchEvent(new Q('onindoorexit_options_changed'))
                    break
                case 'indoorFloorControl':
                    this.dispatchEvent(new Q('onindoorfloor_options_changed'))
                }
            }
        },
        rk: function () {
            this.ol.style.visibility = 'hidden'
        },
        Vx: function () {
            this.ol.style.visibility = 'visible'
        },
        NV: function () {
            this.m.enableScrollWheelZoom = p
        },
        oV: function () {
            this.m.enableScrollWheelZoom = t
        },
        show: function () {
            this.m.visible = p
        },
        aa: function () {
            this.m.visible = t
        },
        wq: function () {
            return Xa() && !I() && this.m.panoramaRenderer != 'javascript' ? 'flashRender' : !I() && Ob() ? 'cvsRender' : 'cssRender'
        },
        Pa: function (a) {
            this.He[a.kd] = a
        },
        Sb: function (a) {
            delete this.He[a]
        },
        kD: function () {
            return this.m.visible
        },
        Yg: function () {
            return new P(this.P.clientWidth, this.P.clientHeight)
        },
        Ua: x('P'),
        jK: function () {
            var a = D.Yh('baidumap', '?')
               var b = this.Xb()
            if (b) {
                var b = {
                    panotype: this.rs(),
                    heading: this.Ia().heading,
                    pitch: this.Ia().pitch,
                    pid: b,
                    panoid: b,
                    from: 'api'
                }; var c
                for (c in b) { a += c + '=' + b[c] + '&' }
            }
            return a.slice(0, -1)
        },
        Vw: function () {
            this.Bk({
                copyrightControlOptions: {
                    logoVisible: t
                }
            })
        },
        EE: function () {
            this.Bk({
                copyrightControlOptions: {
                    logoVisible: p
                }
            })
        },
        gB: function (a) {
            function b (a, b) {
                return function () {
                    a.Oq.push({
                        UL: b,
                        TL: arguments
                    })
                }
            }
            for (var c = a.getPanoMethodList(), e = '', f = 0, g = c.length; f < g; f++) {
 e = c[f],
                this[e] = b(this, e)
}
            this.Lg.push(a)
        },
        iE: function (a) {
            for (var b = this.Lg.length; b--;) { this.Lg[b] === a && this.Lg.splice(b, 1) }
        },
        wE: u()
    })
    var Be = Ra.prototype
    U(Be, {
        setId: Be.Cc,
        setPosition: Be.ua,
        setPov: Be.od,
        setZoom: Be.Qc,
        setOptions: Be.Bk,
        getId: Be.Xb,
        getPosition: Be.ja,
        getPov: Be.Ia,
        getZoom: Be.ka,
        getLinks: Be.DW,
        getBaiduMapUrl: Be.jK,
        hideMapLogo: Be.Vw,
        showMapLogo: Be.EE,
        enableDoubleClickZoom: Be.Z1,
        disableDoubleClickZoom: Be.Q1,
        enableScrollWheelZoom: Be.NV,
        disableScrollWheelZoom: Be.oV,
        show: Be.show,
        hide: Be.aa,
        addPlugin: Be.gB,
        removePlugin: Be.iE,
        getVisible: Be.kD,
        addOverlay: Be.Pa,
        removeOverlay: Be.Sb,
        getSceneType: Be.rs,
        setPanoramaPOIType: Be.mt,
        exitInter: Be.wo,
        setInteractiveState: Be.wE
    })
    U(window, {
        BMAP_PANORAMA_POI_HOTEL: 'hotel',
        BMAP_PANORAMA_POI_CATERING: 'catering',
        BMAP_PANORAMA_POI_MOVIE: 'movie',
        BMAP_PANORAMA_POI_TRANSIT: 'transit',
        BMAP_PANORAMA_POI_INDOOR_SCENE: 'indoor_scene',
        BMAP_PANORAMA_POI_NONE: 'none',
        BMAP_PANORAMA_INDOOR_SCENE: 'inter',
        BMAP_PANORAMA_STREET_SCENE: 'street'
    })
    function Ce () {
        z.lang.Ga.call(this)
        this.kd = 'PanoramaOverlay_' + this.ea
        this.W = s
        this.Sa = p
    }
    z.lang.wa(Ce, z.lang.Ga, 'PanoramaOverlayBase')
    z.extend(Ce.prototype, {
        K2: x('kd'),
        xa: function () {
            aa('initialize\u65b9\u6cd5\u672a\u5b9e\u73b0')
        },
        remove: function () {
            aa('remove\u65b9\u6cd5\u672a\u5b9e\u73b0')
        },
        Hf: function () {
            aa('_setOverlayProperty\u65b9\u6cd5\u672a\u5b9e\u73b0')
        }
    })
    function De (a, b) {
        Ce.call(this)
        var c = {
            position: s,
            altitude: 2,
            displayDistance: p
        }; var b = b || {}; var e
        for (e in b) { c[e] = b[e] }
        this.Lb = c.position
        this.yj = a
        this.Rp = c.altitude
        this.eQ = c.displayDistance
        this.OE = c.color
        this.XK = c.hoverColor
        this.backgroundColor = c.backgroundColor
        this.ZI = c.backgroundHoverColor
        this.borderColor = c.borderColor
        this.cJ = c.borderHoverColor
        this.fontSize = c.fontSize
        this.padding = c.padding
        this.qD = c.imageUrl
        this.size = c.size
        this.ve = c.image
        this.width = c.width
        this.height = c.height
        this.xX = c.imageData
        this.borderWidth = c.borderWidth
    }
    z.lang.wa(De, Ce, 'PanoramaLabel')
    z.extend(De.prototype, {
        p2: x('borderWidth'),
        getImageData: x('xX'),
        cm: x('OE'),
        E2: x('XK'),
        l2: x('backgroundColor'),
        m2: x('ZI'),
        n2: x('borderColor'),
        o2: x('cJ'),
        C2: x('fontSize'),
        L2: x('padding'),
        F2: x('qD'),
        Hb: x('size'),
        Gw: x('ve'),
        ua: function (a) {
            this.Lb = a
            this.Hf('position', a)
        },
        ja: x('Lb'),
        cd: function (a) {
            this.yj = a
            this.Hf('content', a)
        },
        jk: x('yj'),
        qE: function (a) {
            this.Rp = a
            this.Hf('altitude', a)
        },
        Ao: x('Rp'),
        Ia: function () {
            var a = this.ja()
               var b = s
               var c = s
            this.W && (c = this.W.ja())
            if (a && c) {
 if (a.oc(c)) { b = this.W.Ia() } else {
                    b = {}
                    b.heading = Ee(a.lng - c.lng, a.lat - c.lat) || 0
                    var a = b
                       var c = this.Ao()
                       var e = this.qn()
                    a.pitch = Math.round(180 * (Math.atan(c / e) / Math.PI)) || 0
                }
}
            return b
        },
        qn: function () {
            var a = 0; var b; var c
            this.W && (b = this.W.ja(),
            (c = this.ja()) && !c.oc(b) && (a = S.Co(b, c)))
            return a
        },
        aa: function () {
            aa('hide\u65b9\u6cd5\u672a\u5b9e\u73b0')
        },
        show: function () {
            aa('show\u65b9\u6cd5\u672a\u5b9e\u73b0')
        },
        Hf: u()
    })
    var Fe = De.prototype
    U(Fe, {
        setPosition: Fe.ua,
        getPosition: Fe.ja,
        setContent: Fe.cd,
        getContent: Fe.jk,
        setAltitude: Fe.qE,
        getAltitude: Fe.Ao,
        getPov: Fe.Ia,
        show: Fe.show,
        hide: Fe.aa
    })
    function Ge (a, b) {
        Ce.call(this)
        var c = {
            icon: '',
            title: '',
            panoInfo: s,
            altitude: 2
        }; var b = b || {}; var e
        for (e in b) { c[e] = b[e] }
        this.Lb = a
        this.aH = c.icon
        this.sI = c.title
        this.Rp = c.altitude
        this.pS = c.panoInfo
        this.Ha = {
            heading: 0,
            pitch: 0
        }
    }
    z.lang.wa(Ge, Ce, 'PanoramaMarker')
    z.extend(Ge.prototype, {
        ua: function (a) {
            this.Lb = a
            this.Hf('position', a)
        },
        ja: x('Lb'),
        Dc: function (a) {
            this.sI = a
            this.Hf('title', a)
        },
        Io: x('sI'),
        Tb: function (a) {
            this.aH = icon
            this.Hf('icon', a)
        },
        Do: x('aH'),
        qE: function (a) {
            this.Rp = a
            this.Hf('altitude', a)
        },
        Ao: x('Rp'),
        $C: x('pS'),
        Ia: function () {
            var a = s
            if (this.W) {
                var a = this.W.ja()
                   var b = this.ja()
                   var a = Ee(b.lng - a.lng, b.lat - a.lat)
                isNaN(a) && (a = 0)
                a = {
                    heading: a,
                    pitch: 0
                }
            } else { a = this.Ha }
            return a
        },
        Hf: u()
    })
    var He = Ge.prototype
    U(He, {
        setPosition: He.ua,
        getPosition: He.ja,
        setTitle: He.Dc,
        getTitle: He.Io,
        setAltitude: He.qE,
        getAltitude: He.Ao,
        getPanoInfo: He.$C,
        getIcon: He.Do,
        setIcon: He.Tb,
        getPov: He.Ia
    })
    function Ee (a, b) {
        var c = 0
        if (a !== 0 && b !== 0) {
            var c = 180 * (Math.atan(a / b) / Math.PI)
               var e = 0
            a > 0 && b < 0 && (e = 90)
            a < 0 && b < 0 && (e = 180)
            a < 0 && b > 0 && (e = 270)
            c = (c + 90) % 90 + e
        } else { a === 0 ? c = b < 0 ? 180 : 0 : b === 0 && (c = a > 0 ? 90 : 270) }
        return Math.round(c)
    }
    function Qa (a) {
        if (typeof Ie === 'boolean') { return Ie }
        if (a === t || !window.WebGLRenderingContext) { return Ie = t }
        if (z.platform.jj) {
            a = 0
            try {
                a = navigator.userAgent.split('Android ')[1].charAt(0)
            } catch (b) {}
            if (a < 5) { return Ie = t }
        }
        var a = document.createElement('canvas')
           var c = s
        try {
            c = a.getContext('webgl')
        } catch (e) {
            Ie = t
        }
        return Ie = c === s ? t : p
    }
    var Ie
    function Je () {
        if (typeof Ke === 'boolean') { return Ke }
        Ke = p
        if (z.platform.zD) { return p }
        var a = navigator.userAgent
        return a.indexOf('Chrome') > -1 || a.indexOf('SAMSUNG-GT-I9508') > -1 ? p : Ke = t
    }
    var Ke
    function ec (a, b) {
        this.W = a || s
        var c = this
        c.W && c.fa()
        K.load('pservice', function () {
            c.yP()
        })
        (b || {}).hf == 'api' ? Ta(Ia) : Ta(Ja)
        this.vd = {
            getPanoramaById: [],
            getPanoramaByLocation: [],
            getVisiblePOIs: [],
            getRecommendPanosById: [],
            getPanoramaVersions: [],
            checkPanoSupportByCityCode: [],
            getPanoramaByPOIId: [],
            getCopyrightProviders: []
        }
    }
    D.tm(function (a) {
        a.wq() !== 'flashRender' && new ec(a, {
            hf: 'api'
        })
    })
    z.extend(ec.prototype, {
        fa: function () {
            function a (a) {
                if (a) {
                    if (a.id != b.vv) {
                        b.kN(a.id)
                        b.ia = a
                        Je() || b.dispatchEvent(new Q('onthumbnail_complete'))
                        b.bb != s && (b.gl = b._position)
                        for (var c in a) {
 if (a.hasOwnProperty(c)) {
 switch (b['_' + c] = a[c],
                                c) {
                                case 'position':
                                    b.Lb = a[c]
                                    break
                                case 'id':
                                    b.bb = a[c]
                                    break
                                case 'links':
                                    b.yn = a[c]
                                    break
                                case 'zoom':
                                    b.Kc = a[c]
                                }
}
}
                        if (b.gl) {
                            var g = b.gl
                               var i = b._position
                            c = g.lat
                            var k = i.lat
                               var m = Pb(k - c)
                               var g = Pb(i.lng - g.lng)
                            c = Math.sin(m / 2) * Math.sin(m / 2) + Math.cos(Pb(c)) * Math.cos(Pb(k)) * Math.sin(g / 2) * Math.sin(g / 2)
                            b.qG = 6371E3 * 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c))
                        }
                        c = new Q('ondataload')
                        c.data = a
                        b.dispatchEvent(c)
                        b.dispatchEvent(new Q('onposition_changed'))
                        b.dispatchEvent(new Q('onlinks_changed'))
                        b.dispatchEvent(new Q('oncopyright_changed'), {
                            copyright: a.copyright
                        })
                        a.Ll && b.m.closeControl ? z.R.show(b.xQ) : z.R.aa(b.xQ)
                    }
                } else {
 b.bb = b.fl,
                    b.Lb = b.gl,
                    b.dispatchEvent(new Q('onnoresult'))
}
            }
            var b = this.W
               var c = this
            b.addEventListener('id_changed', function () {
                c.Go(b.Xb(), a)
            })
            b.addEventListener('iid_changed', function () {
                c.Mg(ec.Qk + 'qt=idata&iid=' + b.Ez + '&fn=', function (b) {
                    if (b && b.result && b.result.error == 0) {
                        var b = b.content[0].interinfo
                           var f = {}
                        f.Ll = b.BreakID
                        for (var g = b.Defaultfloor, i = s, k = 0; k < b.Floors.length; k++) {
 if (b.Floors[k].Floor == g) {
                                i = b.Floors[k]
                                break
                            }
}
                        f.id = i.StartID || i.Points[0].PID
                        c.Go(f.id, a, f)
                    }
                })
            })
            b.addEventListener('position_changed_inner', function () {
                c.dj(b.ja(), a)
            })
        },
        Go: function (a, b) {
            this.vd.getPanoramaById.push(arguments)
        },
        dj: function (a, b, c) {
            this.vd.getPanoramaByLocation.push(arguments)
        },
        lD: function (a, b, c, e) {
            this.vd.getVisiblePOIs.push(arguments)
        },
        Pw: function (a, b) {
            this.vd.getRecommendPanosById.push(arguments)
        },
        Ow: function (a) {
            this.vd.getPanoramaVersions.push(arguments)
        },
        tB: function (a, b) {
            this.vd.checkPanoSupportByCityCode.push(arguments)
        },
        Nw: function (a, b) {
            this.vd.getPanoramaByPOIId.push(arguments)
        },
        nK: function (a) {
            this.vd.getCopyrightProviders.push(arguments)
        }
    })
    var Le = ec.prototype
    U(Le, {
        getPanoramaById: Le.Go,
        getPanoramaByLocation: Le.dj,
        getPanoramaByPOIId: Le.Nw
    })
    function dc (a) {
        Mc.call(this)
        (a || {}).hf == 'api' ? Ta(Ca) : Ta(Da)
    }
    dc.KF = D.Yh('pano', 'tile/')
    dc.prototype = new Mc()
    dc.prototype.getTilesUrl = function (a, b) {
        var c = dc.KF[(a.x + a.y) % dc.KF.length] + '?udt=20150114&qt=tile&styles=pl&x=' + a.x + '&y=' + a.y + '&z=' + b
        z.ga.ma && z.ga.ma <= 6 && (c += '&color_dep=32')
        return c
    }

    dc.prototype.Ks = ea(p)
    Me.Ud = new S()
    function Me () {}
    z.extend(Me, {
        pV: function (a, b, c) {
            c = z.lang.Mc(c)
            b = {
                data: b
            }
            a == 'position_changed' && (b.data = Me.Ud.oj(new R(b.data.mercatorX, b.data.mercatorY)))
            c.dispatchEvent(new Q('on' + a), b)
        }
    })
    var Ne = Me
    U(Ne, {
        dispatchFlashEvent: Ne.pV
    })
    var Oe = {
        yO: 50
    }
    Oe.du = D.Yh('pano')[0]
    Oe.bu = {
        width: 220,
        height: 60
    }
    z.extend(Oe, {
        fL: function (a, b, c, e) {
            if (!b || !c || !c.lngLat || !c.panoInstance) { e() } else {
                this.En === l && (this.En = new ec(s, {
                    hf: 'api'
                }))
                var f = this
                this.En.tB(b, function (b) {
                    b ? f.En.dj(c.lngLat, Oe.yO, function (b) {
                        if (b && b.id) {
                            var g = b.id
                               var m = b.gh
                               var b = b.hh
                               var n = ec.Ud.qg(c.lngLat)
                               var o = f.cR(n, {
                                x: m,
                                y: b
                            })
                               var m = f.yK(g, o, 0, Oe.bu.width, Oe.bu.height)
                            a.content = f.dR(a.content, m, c.titleTip, c.beforeDomId)
                            a.addEventListener('open', function () {
                                ja.V(z.Ec('infoWndPano'), 'click', function () {
                                    c.panoInstance.Cc(g)
                                    c.panoInstance.show()
                                    c.panoInstance.od({
                                        heading: o,
                                        pitch: 0
                                    })
                                })
                            })
                        }
                        e()
                    }) : e()
                })
            }
        },
        dR: function (a, b, c, e) {
            var c = c || ''; var f
            !e || !a.split(e)[0] ? (e = a,
            a = '') : (e = a.split(e)[0],
            f = e.lastIndexOf('<'),
            e = a.substring(0, f),
            a = a.substring(f))
            f = []
            var g = Oe.bu.width
               var i = Oe.bu.height
            f.push(e)
            f.push("<div id='infoWndPano' class='panoInfoBox' style='height:" + i + 'px;width:' + g + "px; margin-top: -19px;'>")
            f.push("<img class='pano_thumnail_img' width='" + g + "' height='" + i + "' border='0' alt='" + c + "\u5916\u666f' title='" + c + "\u5916\u666f' src='" + b + "' onerror='Pano.PanoEntranceUtil.thumbnailNotFound(this, " + g + ', ' + i + ");' />")
            f.push("<div class='panoInfoBoxTitleBg' style='width:" + g + "px;'></div><a href='javascript:void(0)' class='panoInfoBoxTitleContent' >\u8fdb\u5165\u5168\u666f&gt;&gt;</a>")
            f.push('</div>')
            f.push(a)
            return f.join('')
        },
        cR: function (a, b) {
            var c = 90 - 180 * Math.atan2(a.y - b.y, a.x - b.x) / Math.PI
            c < 0 && (c += 360)
            return c
        },
        yK: function (a, b, c, e, f) {
            var g = {
                panoId: a,
                panoHeading: b || 0,
                panoPitch: c || 0,
                width: e,
                height: f
            }
            return (Oe.du + '?qt=pr3d&fovy=75&quality=80&panoid={panoId}&heading={panoHeading}&pitch={panoPitch}&width={width}&height={height}').replace(/\{(.*?)\}/g, function (a, b) {
                return g[b]
            })
        }
    })
    var Pe = document; var Qe = Math; var Re = Pe.createElement('div').style; var Se
    a: {
        for (var Te = ['t', 'webkitT', 'MozT', 'msT', 'OT'], Ue, Ve = 0, We = Te.length; Ve < We; Ve++) {
 if (Ue = Te[Ve] + 'ransform',
            Ue in Re) {
                Se = Te[Ve].substr(0, Te[Ve].length - 1)
                break a
            }
}
        Se = t
    }
    var Xe = Se ? '-' + Se.toLowerCase() + '-' : ''
       var Ze = Ye('transform')
       var $e = Ye('transitionProperty')
       var af = Ye('transitionDuration')
       var bf = Ye('transformOrigin')
       var cf = Ye('transitionTimingFunction')
       var df = Ye('transitionDelay')
       var ne = /android/gi.test(navigator.appVersion)
       var ef = /iphone|ipad/gi.test(navigator.appVersion)
       var ff = /hp-tablet/gi.test(navigator.appVersion)
       var gf = Ye('perspective') in Re
       var hf = 'ontouchstart' in window && !ff
       var jf = Se !== t
       var kf = Ye('transition') in Re
       var lf = 'onorientationchange' in window ? 'orientationchange' : 'resize'
       var mf = hf ? 'touchstart' : 'mousedown'
       var nf = hf ? 'touchmove' : 'mousemove'
       var of = hf ? 'touchend' : 'mouseup'
       var pf = hf ? 'touchcancel' : 'mouseup'
       var qf = Se === t ? t : {
        '': 'transitionend',
        webkit: 'webkitTransitionEnd',
        Moz: 'transitionend',
        O: 'otransitionend',
        ms: 'MSTransitionEnd'
    }[Se]
       var rf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (a) {
        return setTimeout(a, 1)
    }
       var sf = window.cancelRequestAnimationFrame || window.r5 || window.webkitCancelRequestAnimationFrame || window.mozCancelRequestAnimationFrame || window.oCancelRequestAnimationFrame || window.msCancelRequestAnimationFrame || clearTimeout
       var tf = gf ? ' translateZ(0)' : ''
    function uf (a, b) {
        var c = this; var e
        c.Pm = typeof a === 'object' ? a : Pe.getElementById(a)
        c.Pm.style.overflow = 'hidden'
        c.Ob = c.Pm.children[0]
        c.options = {
            Mo: p,
            Mm: p,
            x: 0,
            y: 0,
            eo: p,
            lU: t,
            ox: p,
            ND: p,
            Kk: p,
            pi: t,
            u_: 0,
            Yv: t,
            Sw: p,
            Zh: p,
            qi: p,
            AC: ne,
            Ww: ef,
            VV: ef && gf,
            nE: '',
            zoom: t,
            Mk: 1,
            zp: 4,
            rV: 2,
            dO: 'scroll',
            At: t,
            Yx: 1,
            mM: s,
            eM: function (a) {
                a.preventDefault()
            },
            pM: s,
            dM: s,
            oM: s,
            cM: s,
            vx: s,
            qM: s,
            hM: s,
            Yo: s,
            rM: s,
            Xo: s
        }
        for (e in b) { c.options[e] = b[e] }
        c.x = c.options.x
        c.y = c.options.y
        c.options.Kk = jf && c.options.Kk
        c.options.Zh = c.options.Mo && c.options.Zh
        c.options.qi = c.options.Mm && c.options.qi
        c.options.zoom = c.options.Kk && c.options.zoom
        c.options.pi = kf && c.options.pi
        c.options.zoom && ne && (tf = '')
        c.Ob.style[$e] = c.options.Kk ? Xe + 'transform' : 'top left'
        c.Ob.style[af] = '0'
        c.Ob.style[bf] = '0 0'
        c.options.pi && (c.Ob.style[cf] = 'cubic-bezier(0.33,0.66,0.66,1)')
        c.options.Kk ? c.Ob.style[Ze] = 'translate(' + c.x + 'px,' + c.y + 'px)' + tf : c.Ob.style.cssText += ';position:absolute;top:' + c.y + 'px;left:' + c.x + 'px'
        c.options.pi && (c.options.AC = p)
        c.refresh()
        c.fa(lf, window)
        c.fa(mf)
        !hf && c.options.dO != 'none' && (c.fa('DOMMouseScroll'),
        c.fa('mousewheel'))
        c.options.Yv && (c.xU = setInterval(function () {
            c.wP()
        }, 500))
        this.options.Sw && (Event.prototype.stopImmediatePropagation || (document.body.removeEventListener = function (a, b, c) {
            var e = Node.prototype.removeEventListener
            a === 'click' ? e.call(document.body, a, b.WK || b, c) : e.call(document.body, a, b, c)
        }
        ,
        document.body.addEventListener = function (a, b, c) {
            var e = Node.prototype.addEventListener
            a === 'click' ? e.call(document.body, a, b.WK || (b.WK = function (a) {
                a.XY || b(a)
            }
            ), c) : e.call(document.body, a, b, c)
        }
        ),
        c.fa('click', document.body, p))
    }
    uf.prototype = {
        enabled: p,
        x: 0,
        y: 0,
        pj: [],
        scale: 1,
        JB: 0,
        KB: 0,
        Ue: [],
        of: [],
        nB: s,
        hy: 0,
        handleEvent: function (a) {
            switch (a.type) {
            case mf:
                if (!hf && a.button !== 0) { break }
                this.ov(a)
                break
            case nf:
                this.aS(a)
                break
            case of:
            case pf:
                this.zu(a)
                break
            case lf:
                this.DA()
                break
            case 'DOMMouseScroll':
            case 'mousewheel':
                this.ET(a)
                break
            case qf:
                this.AT(a)
                break
            case 'click':
                this.GP(a)
            }
        },
        wP: function () {
            !this.fh && (!this.Nk && !(this.Il || this.Ox == this.Ob.offsetWidth * this.scale && this.gp == this.Ob.offsetHeight * this.scale)) && this.refresh()
        },
        fv: function (a) {
            var b
            this[a + 'Scrollbar'] ? (this[a + 'ScrollbarWrapper'] || (b = Pe.createElement('div'),
            this.options.nE ? b.className = this.options.nE + a.toUpperCase() : b.style.cssText = 'position:absolute;z-index:100;' + (a == 'h' ? 'height:7px;bottom:1px;left:2px;right:' + (this.qi ? '7' : '2') + 'px' : 'width:7px;bottom:' + (this.Zh ? '7' : '2') + 'px;top:2px;right:1px'),
            b.style.cssText += ';pointer-events:none;' + Xe + 'transition-property:opacity;' + Xe + 'transition-duration:' + (this.options.VV ? '350ms' : '0') + ';overflow:hidden;opacity:' + (this.options.Ww ? '0' : '1'),
            this.Pm.appendChild(b),
            this[a + 'ScrollbarWrapper'] = b,
            b = Pe.createElement('div'),
            this.options.nE || (b.style.cssText = 'position:absolute;z-index:100;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);' + Xe + 'background-clip:padding-box;' + Xe + 'box-sizing:border-box;' + (a == 'h' ? 'height:100%' : 'width:100%') + ';' + Xe + 'border-radius:3px;border-radius:3px'),
            b.style.cssText += ';pointer-events:none;' + Xe + 'transition-property:' + Xe + 'transform;' + Xe + 'transition-timing-function:cubic-bezier(0.33,0.66,0.66,1);' + Xe + 'transition-duration:0;' + Xe + 'transform: translate(0,0)' + tf,
            this.options.pi && (b.style.cssText += ';' + Xe + 'transition-timing-function:cubic-bezier(0.33,0.66,0.66,1)'),
            this[a + 'ScrollbarWrapper'].appendChild(b),
            this[a + 'ScrollbarIndicator'] = b),
            a == 'h' ? (this.SK = this.TK.clientWidth,
            this.oX = Qe.max(Qe.round(this.SK * this.SK / this.Ox), 8),
            this.nX.style.width = this.oX + 'px') : (this.WN = this.XN.clientHeight,
            this.O_ = Qe.max(Qe.round(this.WN * this.WN / this.gp), 8),
            this.N_.style.height = this.O_ + 'px'),
            this.EA(a, p)) : this[a + 'ScrollbarWrapper'] && (jf && (this[a + 'ScrollbarIndicator'].style[Ze] = ''),
            this[a + 'ScrollbarWrapper'].parentNode.removeChild(this[a + 'ScrollbarWrapper']),
            this[a + 'ScrollbarWrapper'] = s,
            this[a + 'ScrollbarIndicator'] = s)
        },
        DA: function () {
            var a = this
            setTimeout(function () {
                a.refresh()
            }, ne ? 200 : 0)
        },
        Rq: function (a, b) {
            this.Nk || (a = this.Mo ? a : 0,
            b = this.Mm ? b : 0,
            this.options.Kk ? this.Ob.style[Ze] = 'translate(' + a + 'px,' + b + 'px) scale(' + this.scale + ')' + tf : (a = Qe.round(a),
            b = Qe.round(b),
            this.Ob.style.left = a + 'px',
            this.Ob.style.top = b + 'px'),
            this.x = a,
            this.y = b,
            this.EA('h'),
            this.EA('v'))
        },
        EA: function (a, b) {
            var c = a == 'h' ? this.x : this.y
            this[a + 'Scrollbar'] && (c *= this[a + 'ScrollbarProp'],
            c < 0 ? (this.options.AC || (c = this[a + 'ScrollbarIndicatorSize'] + Qe.round(3 * c),
            c < 8 && (c = 8),
            this[a + 'ScrollbarIndicator'].style[a == 'h' ? 'width' : 'height'] = c + 'px'),
            c = 0) : c > this[a + 'ScrollbarMaxScroll'] && (this.options.AC ? c = this[a + 'ScrollbarMaxScroll'] : (c = this[a + 'ScrollbarIndicatorSize'] - Qe.round(3 * (c - this[a + 'ScrollbarMaxScroll'])),
            c < 8 && (c = 8),
            this[a + 'ScrollbarIndicator'].style[a == 'h' ? 'width' : 'height'] = c + 'px',
            c = this[a + 'ScrollbarMaxScroll'] + (this[a + 'ScrollbarIndicatorSize'] - c))),
            this[a + 'ScrollbarWrapper'].style[df] = '0',
            this[a + 'ScrollbarWrapper'].style.opacity = b && this.options.Ww ? '0' : '1',
            this[a + 'ScrollbarIndicator'].style[Ze] = 'translate(' + (a == 'h' ? c + 'px,0)' : '0,' + c + 'px)') + tf)
        },
        GP: function (a) {
            if (a.yQ === p) {
 return this.cB = a.target,
                this.yw = Date.now(),
                p
}
            if (this.cB && this.yw) {
                if (Date.now() - this.yw > 600) {
 return this.yw = this.cB = s,
                    p
}
            } else {
                for (var b = a.target; b != this.Ob && b != document.body;) { b = b.parentNode }
                if (b == document.body) { return p }
            }
            for (b = a.target; b.nodeType != 1;) { b = b.parentNode }
            b = b.tagName.toLowerCase()
            if (b != 'select' && b != 'input' && b != 'textarea') {
 return a.stopImmediatePropagation ? a.stopImmediatePropagation() : a.XY = p,
                a.stopPropagation(),
                a.preventDefault(),
                this.yw = this.cB = s,
                t
}
        },
        ov: function (a) {
            var b = hf ? a.touches[0] : a; var c; var e
            if (this.enabled) {
                this.options.eM && this.options.eM.call(this, a);
                (this.options.pi || this.options.zoom) && this.uI(0)
                this.Nk = this.Il = this.fh = t
                this.SB = this.RB = this.Hv = this.Gv = this.YB = this.XB = 0
                this.options.zoom && (hf && a.touches.length > 1) && (e = Qe.abs(a.touches[0].pageX - a.touches[1].pageX),
                c = Qe.abs(a.touches[0].pageY - a.touches[1].pageY),
                this.w_ = Qe.sqrt(e * e + c * c),
                this.xx = Qe.abs(a.touches[0].pageX + a.touches[1].pageX - 2 * this.fF) / 2 - this.x,
                this.yx = Qe.abs(a.touches[0].pageY + a.touches[1].pageY - 2 * this.gF) / 2 - this.y,
                this.options.Yo && this.options.Yo.call(this, a))
                if (this.options.ox && (this.options.Kk ? (c = getComputedStyle(this.Ob, s)[Ze].replace(/[^0-9\-.,]/g, '').split(','),
                e = +(c[12] || c[4]),
                c = +(c[13] || c[5])) : (e = +getComputedStyle(this.Ob, s).left.replace(/[^0-9-]/g, ''),
                c = +getComputedStyle(this.Ob, s).top.replace(/[^0-9-]/g, '')),
                e != this.x || c != this.y)) {
 this.options.pi ? this.Yd(qf) : sf(this.nB),
                    this.pj = [],
                    this.Rq(e, c),
                    this.options.vx && this.options.vx.call(this)
}
                this.Iv = this.x
                this.Jv = this.y
                this.Dt = this.x
                this.Et = this.y
                this.gh = b.pageX
                this.hh = b.pageY
                this.startTime = a.timeStamp || Date.now()
                this.options.pM && this.options.pM.call(this, a)
                this.fa(nf, window)
                this.fa(of, window)
                this.fa(pf, window)
            }
        },
        aS: function (a) {
            var b = hf ? a.touches[0] : a
               var c = b.pageX - this.gh
               var e = b.pageY - this.hh
               var f = this.x + c
               var g = this.y + e
               var i = a.timeStamp || Date.now()
            this.options.dM && this.options.dM.call(this, a)
            if (this.options.zoom && hf && a.touches.length > 1) {
 f = Qe.abs(a.touches[0].pageX - a.touches[1].pageX),
                g = Qe.abs(a.touches[0].pageY - a.touches[1].pageY),
                this.v_ = Qe.sqrt(f * f + g * g),
                this.Nk = p,
                b = 1 / this.w_ * this.v_ * this.scale,
                b < this.options.Mk ? b = 0.5 * this.options.Mk * Math.pow(2, b / this.options.Mk) : b > this.options.zp && (b = 2 * this.options.zp * Math.pow(0.5, this.options.zp / b)),
                this.Ro = b / this.scale,
                f = this.xx - this.xx * this.Ro + this.x,
                g = this.yx - this.yx * this.Ro + this.y,
                this.Ob.style[Ze] = 'translate(' + f + 'px,' + g + 'px) scale(' + b + ')' + tf,
                this.options.rM && this.options.rM.call(this, a)
} else {
                this.gh = b.pageX
                this.hh = b.pageY
                if (f > 0 || f < this.fe) { f = this.options.eo ? this.x + c / 2 : f >= 0 || this.fe >= 0 ? 0 : this.fe }
                if (g > this.mf || g < this.nd) { g = this.options.eo ? this.y + e / 2 : g >= this.mf || this.nd >= 0 ? this.mf : this.nd }
                this.XB += c
                this.YB += e
                this.Gv = Qe.abs(this.XB)
                this.Hv = Qe.abs(this.YB)
                this.Gv < 6 && this.Hv < 6 || (this.options.ND && (this.Gv > this.Hv + 5 ? (g = this.y,
                e = 0) : this.Hv > this.Gv + 5 && (f = this.x,
                c = 0)),
                this.fh = p,
                this.Rq(f, g),
                this.RB = c > 0 ? -1 : c < 0 ? 1 : 0,
                this.SB = e > 0 ? -1 : e < 0 ? 1 : 0,
                i - this.startTime > 300 && (this.startTime = i,
                this.Dt = this.x,
                this.Et = this.y),
                this.options.oM && this.options.oM.call(this, a))
            }
        },
        zu: function (a) {
            if (!(hf && a.touches.length !== 0)) {
                var b = this; var c = hf ? a.changedTouches[0] : a; var e; var f; var g = {
                    Fa: 0,
                    time: 0
                }; var i = {
                    Fa: 0,
                    time: 0
                }; var k = (a.timeStamp || Date.now()) - b.startTime
                e = b.x
                f = b.y
                b.Yd(nf, window)
                b.Yd(of, window)
                b.Yd(pf, window)
                b.options.cM && b.options.cM.call(b, a)
                if (b.Nk) {
 e = b.scale * b.Ro,
                    e = Math.max(b.options.Mk, e),
                    e = Math.min(b.options.zp, e),
                    b.Ro = e / b.scale,
                    b.scale = e,
                    b.x = b.xx - b.xx * b.Ro + b.x,
                    b.y = b.yx - b.yx * b.Ro + b.y,
                    b.Ob.style[af] = '200ms',
                    b.Ob.style[Ze] = 'translate(' + b.x + 'px,' + b.y + 'px) scale(' + b.scale + ')' + tf,
                    b.Nk = t,
                    b.refresh(),
                    b.options.Xo && b.options.Xo.call(b, a)
} else {
                    if (b.fh) {
                        if (k < 300 && b.options.ox) {
                            g = e ? b.qH(e - b.Dt, k, -b.x, b.Ox - b.Rt + b.x, b.options.eo ? b.Rt : 0) : g
                            i = f ? b.qH(f - b.Et, k, -b.y, b.nd < 0 ? b.gp - b.Qm + b.y - b.mf : 0, b.options.eo ? b.Qm : 0) : i
                            e = b.x + g.Fa
                            f = b.y + i.Fa
                            if (b.x > 0 && e > 0 || b.x < b.fe && e < b.fe) {
 g = {
                                    Fa: 0,
                                    time: 0
                                }
}
                            if (b.y > b.mf && f > b.mf || b.y < b.nd && f < b.nd) {
 i = {
                                    Fa: 0,
                                    time: 0
                                }
}
                        }
                        g.Fa || i.Fa ? (c = Qe.max(Qe.max(g.time, i.time), 10),
                        b.options.At && (g = e - b.Iv,
                        i = f - b.Jv,
                        Qe.abs(g) < b.options.Yx && Qe.abs(i) < b.options.Yx ? b.scrollTo(b.Iv, b.Jv, 200) : (g = b.kI(e, f),
                        e = g.x,
                        f = g.y,
                        c = Qe.max(g.time, c))),
                        b.scrollTo(Qe.round(e), Qe.round(f), c)) : b.options.At ? (g = e - b.Iv,
                        i = f - b.Jv,
                        Qe.abs(g) < b.options.Yx && Qe.abs(i) < b.options.Yx ? b.scrollTo(b.Iv, b.Jv, 200) : (g = b.kI(b.x, b.y),
                        (g.x != b.x || g.y != b.y) && b.scrollTo(g.x, g.y, g.time))) : b.Gn(200)
                    } else {
                        if (hf) {
 if (b.FJ && b.options.zoom) {
 clearTimeout(b.FJ),
                                b.FJ = s,
                                b.options.Yo && b.options.Yo.call(b, a),
                                b.zoom(b.gh, b.hh, b.scale == 1 ? b.options.rV : 1),
                                b.options.Xo && setTimeout(function () {
                                    b.options.Xo.call(b, a)
                                }, 200)
} else if (this.options.Sw) {
                                for (e = c.target; e.nodeType != 1;) { e = e.parentNode }
                                f = e.tagName.toLowerCase()
                                f != 'select' && f != 'input' && f != 'textarea' ? (f = Pe.createEvent('MouseEvents'),
                                f.initMouseEvent('click', p, p, a.view, 1, c.screenX, c.screenY, c.clientX, c.clientY, a.ctrlKey, a.altKey, a.shiftKey, a.metaKey, 0, s),
                                f.yQ = p,
                                e.dispatchEvent(f)) : e.focus()
                            }
}
                        b.Gn(400)
                    }
                    b.options.qM && b.options.qM.call(b, a)
                }
            }
        },
        Gn: function (a) {
            var b = this.x >= 0 ? 0 : this.x < this.fe ? this.fe : this.x
               var c = this.y >= this.mf || this.nd > 0 ? this.mf : this.y < this.nd ? this.nd : this.y
            if (b == this.x && c == this.y) {
                if (this.fh && (this.fh = t,
                this.options.vx && this.options.vx.call(this)),
                this.Zh && this.options.Ww && (Se == 'webkit' && (this.TK.style[df] = '300ms'),
                this.TK.style.opacity = '0'),
                this.qi && this.options.Ww) {
 Se == 'webkit' && (this.XN.style[df] = '300ms'),
                    this.XN.style.opacity = '0'
}
            } else { this.scrollTo(b, c, a || 0) }
        },
        ET: function (a) {
            var b = this; var c; var e
            if ('wheelDeltaX' in a) {
 c = a.wheelDeltaX / 12,
                e = a.wheelDeltaY / 12
} else if ('wheelDelta' in a) { c = e = a.wheelDelta / 12 } else if ('detail' in a) { c = e = 3 * -a.detail } else { return }
            if (b.options.dO == 'zoom') {
                if (e = b.scale * Math.pow(2, 1 / 3 * (e ? e / Math.abs(e) : 0)),
                e < b.options.Mk && (e = b.options.Mk),
                e > b.options.zp && (e = b.options.zp),
                e != b.scale) {
 !b.hy && b.options.Yo && b.options.Yo.call(b, a),
                    b.hy++,
                    b.zoom(a.pageX, a.pageY, e, 400),
                    setTimeout(function () {
                        b.hy--
                        !b.hy && b.options.Xo && b.options.Xo.call(b, a)
                    }, 400)
}
            } else {
 c = b.x + c,
                e = b.y + e,
                c > 0 ? c = 0 : c < b.fe && (c = b.fe),
                e > b.mf ? e = b.mf : e < b.nd && (e = b.nd),
                b.nd < 0 && b.scrollTo(c, e, 0)
}
        },
        AT: function (a) {
            a.target == this.Ob && (this.Yd(qf),
            this.QA())
        },
        QA: function () {
            var a = this; var b = a.x; var c = a.y; var e = Date.now(); var f; var g; var i
            a.Il || (a.pj.length ? (f = a.pj.shift(),
            f.x == b && f.y == c && (f.time = 0),
            a.Il = p,
            a.fh = p,
            a.options.pi) ? (a.uI(f.time),
            a.Rq(f.x, f.y),
            a.Il = t,
            f.time ? a.fa(qf) : a.Gn(0)) : (i = function () {
                var k = Date.now(); var m
                if (k >= e + f.time) {
                    a.Rq(f.x, f.y)
                    a.Il = t
                    a.options.xY && a.options.xY.call(a)
                    a.QA()
                } else {
                    k = (k - e) / f.time - 1
                    g = Qe.sqrt(1 - k * k)
                    k = (f.x - b) * g + b
                    m = (f.y - c) * g + c
                    a.Rq(k, m)
                    if (a.Il) { a.nB = rf(i) }
                }
            }
            ,
            i()) : a.Gn(400))
        },
        uI: function (a) {
            a += 'ms'
            this.Ob.style[af] = a
            this.Zh && (this.nX.style[af] = a)
            this.qi && (this.N_.style[af] = a)
        },
        qH: function (a, b, c, e, f) {
            var b = Qe.abs(a) / b
               var g = b * b / 0.0012
            a > 0 && g > c ? (c += f / (6 / (6.0E-4 * (g / b))),
            b = b * c / g,
            g = c) : a < 0 && g > e && (e += f / (6 / (6.0E-4 * (g / b))),
            b = b * e / g,
            g = e)
            return {
                Fa: g * (a < 0 ? -1 : 1),
                time: Qe.round(b / 6.0E-4)
            }
        },
        Nj: function (a) {
            for (var b = -a.offsetLeft, c = -a.offsetTop; a = a.offsetParent;) {
 b -= a.offsetLeft,
                c -= a.offsetTop
}
            a != this.Pm && (b *= this.scale,
            c *= this.scale)
            return {
                left: b,
                top: c
            }
        },
        kI: function (a, b) {
            var c, e, f
            f = this.Ue.length - 1
            c = 0
            for (e = this.Ue.length; c < e; c++) {
 if (a >= this.Ue[c]) {
                    f = c
                    break
                }
}
            f == this.JB && (f > 0 && this.RB < 0) && f--
            a = this.Ue[f]
            e = (e = Qe.abs(a - this.Ue[this.JB])) ? 500 * (Qe.abs(this.x - a) / e) : 0
            this.JB = f
            f = this.of.length - 1
            for (c = 0; c < f; c++) {
 if (b >= this.of[c]) {
                    f = c
                    break
                }
}
            f == this.KB && (f > 0 && this.SB < 0) && f--
            b = this.of[f]
            c = (c = Qe.abs(b - this.of[this.KB])) ? 500 * (Qe.abs(this.y - b) / c) : 0
            this.KB = f
            f = Qe.round(Qe.max(e, c)) || 200
            return {
                x: a,
                y: b,
                time: f
            }
        },
        fa: function (a, b, c) {
            (b || this.Ob).addEventListener(a, this, !!c)
        },
        Yd: function (a, b, c) {
            (b || this.Ob).removeEventListener(a, this, !!c)
        },
        PB: ha(2),
        refresh: function () {
            var a; var b; var c; var e = 0
            b = 0
            this.scale < this.options.Mk && (this.scale = this.options.Mk)
            this.Rt = this.Pm.clientWidth || 1
            this.Qm = this.Pm.clientHeight || 1
            this.mf = -this.options.u_ || 0
            this.Ox = Qe.round(this.Ob.offsetWidth * this.scale)
            this.gp = Qe.round((this.Ob.offsetHeight + this.mf) * this.scale)
            this.fe = this.Rt - this.Ox
            this.nd = this.Qm - this.gp + this.mf
            this.SB = this.RB = 0
            this.options.mM && this.options.mM.call(this)
            this.Mo = this.options.Mo && this.fe < 0
            this.Mm = this.options.Mm && (!this.options.lU && !this.Mo || this.gp > this.Qm)
            this.Zh = this.Mo && this.options.Zh
            this.qi = this.Mm && this.options.qi && this.gp > this.Qm
            a = this.Nj(this.Pm)
            this.fF = -a.left
            this.gF = -a.top
            if (typeof this.options.At === 'string') {
                this.Ue = []
                this.of = []
                c = this.Ob.querySelectorAll(this.options.At)
                a = 0
                for (b = c.length; a < b; a++) {
 e = this.Nj(c[a]),
                    e.left += this.fF,
                    e.top += this.gF,
                    this.Ue[a] = e.left < this.fe ? this.fe : e.left * this.scale,
                    this.of[a] = e.top < this.nd ? this.nd : e.top * this.scale
}
            } else if (this.options.At) {
                for (this.Ue = []; e >= this.fe;) {
 this.Ue[b] = e,
                    e -= this.Rt,
                    b++
}
                this.fe % this.Rt && (this.Ue[this.Ue.length] = this.fe - this.Ue[this.Ue.length - 1] + this.Ue[this.Ue.length - 1])
                b = e = 0
                for (this.of = []; e >= this.nd;) {
 this.of[b] = e,
                    e -= this.Qm,
                    b++
}
                this.nd % this.Qm && (this.of[this.of.length] = this.nd - this.of[this.of.length - 1] + this.of[this.of.length - 1])
            }
            this.fv('h')
            this.fv('v')
            this.Nk || (this.Ob.style[af] = '0',
            this.Gn(400))
        },
        scrollTo: function (a, b, c, e) {
            var f = a
            this.stop()
            f.length || (f = [{
                x: a,
                y: b,
                time: c,
                $Y: e
            }])
            a = 0
            for (b = f.length; a < b; a++) {
 f[a].$Y && (f[a].x = this.x - f[a].x,
                f[a].y = this.y - f[a].y),
                this.pj.push({
                    x: f[a].x,
                    y: f[a].y,
                    time: f[a].time || 0
                })
}
            this.QA()
        },
        disable: function () {
            this.stop()
            this.Gn(0)
            this.enabled = t
            this.Yd(nf, window)
            this.Yd(of, window)
            this.Yd(pf, window)
        },
        enable: function () {
            this.enabled = p
        },
        stop: function () {
            this.options.pi ? this.Yd(qf) : sf(this.nB)
            this.pj = []
            this.Il = this.fh = t
        },
        zoom: function (a, b, c, e) {
            var f = c / this.scale
            this.options.Kk && (this.Nk = p,
            e = e === l ? 200 : e,
            a = a - this.fF - this.x,
            b = b - this.gF - this.y,
            this.x = a - a * f + this.x,
            this.y = b - b * f + this.y,
            this.scale = c,
            this.refresh(),
            this.x = this.x > 0 ? 0 : this.x < this.fe ? this.fe : this.x,
            this.y = this.y > this.mf ? this.mf : this.y < this.nd ? this.nd : this.y,
            this.Ob.style[af] = e + 'ms',
            this.Ob.style[Ze] = 'translate(' + this.x + 'px,' + this.y + 'px) scale(' + c + ')' + tf,
            this.Nk = t)
        }
    }
    function Ye (a) {
        if (Se === '') { return a }
        a = a.charAt(0).toUpperCase() + a.substr(1)
        return Se + a
    }
    Re = s
    function vf (a) {
        this.m = {
            anchor: Yb,
            offset: new P(0, 0),
            maxWidth: '100%',
            imageHeight: 80
        }
        var a = a || {}; var b
        for (b in a) { this.m[b] = a[b] }
        this.wl = new ec(s, {
            hf: 'api'
        })
        this.Pj = []
        this.W = s
        this.ag = {
            height: this.m.imageHeight,
            width: this.m.imageHeight * wf
        }
        this.Rc = this.FA = this.Ll = this.Yc = s
    }
    var xf = [0, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 5, 5, 5, 6, 6, 7, 8, 8, 8, 9, 10]
       var yf = '\u5176\u4ed6 \u6b63\u95e8 \u623f\u578b \u8bbe\u65bd \u6b63\u95e8 \u9910\u996e\u8bbe\u65bd \u5176\u4ed6\u8bbe\u65bd \u6b63\u95e8 \u8bbe\u65bd \u89c2\u5f71\u5385 \u5176\u4ed6\u8bbe\u65bd'.split(' ')
    D.tm(function (a) {
        var b = s
        a.addEventListener('position_changed', function () {
            a.m.visible && a.m.albumsControl === p && (b ? b.Jx(a.Xb()) : (b = new vf(a.m.albumsControlOptions),
            b.xa(a)))
        })
        a.addEventListener('albums_visible_changed', function () {
            a.m.albumsControl === p ? (b ? b.Jx(a.Xb()) : (b = new vf(a.m.albumsControlOptions),
            b.xa(a)),
            b.show()) : b.aa()
        })
        a.addEventListener('albums_options_changed', function () {
            b && b.Bk(a.m.albumsControlOptions)
        })
        a.addEventListener('visible_changed', function () {
            b && (a.kD() ? a.m.albumsControl === p && (b.P.style.visibility = 'visible') : b.P.style.visibility = 'hidden')
        })
    })
    var wf = 1.8
    I() && (wf = 1)
    z.extend(vf.prototype, {
        Bk: function (a) {
            for (var b in a) { this.m[b] = a[b] }
            a = this.m.imageHeight + 'px'
            this.uc(this.m.anchor)
            this.P.style.width = isNaN(Number(this.m.maxWidth)) === p ? this.m.maxWidth : this.m.maxWidth + 'px'
            this.P.style.height = a
            this.Uj.style.height = a
            this.Ih.style.height = a
            this.ag = {
                height: this.m.imageHeight,
                width: this.m.imageHeight * wf
            }
            this.Tj.style.height = this.ag.height - 6 + 'px'
            this.Tj.style.width = this.ag.width - 6 + 'px'
            this.Jx(this.W.Xb(), p)
        },
        xa: function (a) {
            this.W = a
            this.Cr()
            this.eP()
            this.FX()
            this.Jx(a.Xb())
        },
        Cr: function () {
            var a = this.m.imageHeight + 'px'
            this.P = O('div')
            var b = this.P.style
            b.cssText = 'background:rgb(37,37,37);background:rgba(37,37,37,0.9);'
            b.position = 'absolute'
            b.zIndex = '2000'
            b.width = isNaN(Number(this.m.maxWidth)) === p ? this.m.maxWidth : this.m.maxWidth + 'px'
            b.padding = '8px 0'
            b.visibility = 'hidden'
            b.height = a
            this.Uj = O('div')
            b = this.Uj.style
            b.position = 'absolute'
            b.overflow = 'hidden'
            b.width = '100%'
            b.height = a
            this.Ih = O('div')
            b = this.Ih.style
            b.height = a
            this.Uj.appendChild(this.Ih)
            this.P.appendChild(this.Uj)
            this.W.P.appendChild(this.P)
            this.Tj = O('div', {
                'class': 'pano_photo_item_seleted'
            })
            this.Tj.style.height = this.ag.height - 6 + 'px'
            this.Tj.style.width = this.ag.width - 6 + 'px'
            this.uc(this.m.anchor)
        },
        LG: function (a) {
            for (var b = this.Pj, c = b.length - 1; c >= 0; c--) {
 if (b[c].panoId == a) { return c }
}
            return -1
        },
        Jx: function (a, b) {
            if (b || !this.Pj[this.Yc] || !(this.Pj[this.Yc].panoId == a && this.Pj[this.Yc].recoType !== 3)) {
                var c = this
                   var e = this.LG(a)
                !b && e !== -1 && this.Pj[e] && this.Pj[e].recoType !== 3 ? this.jp(e) : this.TW(function (a) {
                    for (var b = {}, e, k, m = t, n = [], o = 0, q = a.length; o < q; o++) {
 e = a[o].catlog,
                        k = a[o].floor,
                        l !== e && (e === '' && l !== k ? (m = p,
                        b[k] || (b[k] = []),
                        b[k].push(a[o])) : (b[xf[e]] || (b[xf[e]] = []),
                        b[xf[e]].push(a[o])))
}
                    for (var v in b) {
 m ? n.push({
                            data: v + 'F',
                            index: v
                        }) : n.push({
                            data: yf[v],
                            index: v
                        })
}
                    c.eG = b
                    c.Di = n
                    c.tl(a)
                    a.length == 0 ? c.aa() : c.show()
                })
            }
        },
        YU: function () {
            if (!this.Ai) {
                var a = this.GW(this.Di)
                   var b = O('div')
                b.style.cssText = ['width:' + 134 * this.Di.length + 'px;', 'overflow:hidden;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;'].join('')
                b.innerHTML = a
                a = O('div')
                a.appendChild(b)
                a.style.cssText = 'position:absolute;top:-25px;background:rgb(37,37,37);background:rgba(37,37,37,0.9);border-bottom:1px solid #4e596a;width:100%;line-height:25px;height:25px;overflow:scroll;outline:0'
                new uf(a, {
                    eo: t,
                    ox: p,
                    Zh: t,
                    qi: t,
                    Mm: t,
                    ND: p,
                    Yv: p,
                    Sw: p
                })
                this.P.appendChild(a)
                for (var c = this, e = b.getElementsByTagName('span'), f = 0, g = e.length; f < g; f++) {
 b = e[f],
                    z.V(b, 'click', function () {
                        if (this.getAttribute('dataindex')) {
                            c.tl(c.eG[this.getAttribute('dataindex')])
                            for (var a = 0, b = e.length; a < b; a++) { e[a].style.color = '#FFFFFF' }
                            this.style.color = '#3383FF'
                        }
                    })
}
                this.Ai = a
            }
        },
        VU: function () {
            if (this.Ai) {
 a = this.lK(this.Di),
                this.uP.innerHTML = a
} else {
                var a = this.lK(this.Di)
                   var b = O('ul')
                   var c = this
                b.style.cssText = 'list-style: none;padding:0px;margin:0px;display:block;width:60px;position:absolute;top:7px'
                b.innerHTML = a
                z.V(b, 'click', function (a) {
                    if (a = (a.srcElement || a.target).getAttribute('dataindex')) {
                        c.tl(c.eG[a])
                        for (var e = b.getElementsByTagName('li'), f = 0, g = e.length; f < g; f++) { e[f].childNodes[0].getAttribute('dataindex') === a ? z.R.eb(e[f], 'pano_catlogLiActive') : z.R.tc(e[f], 'pano_catlogLiActive') }
                    }
                })
                var a = O('div')
                   var e = O('a')
                   var f = O('span')
                   var g = O('a')
                   var i = O('span')
                   var k = ['background:url(' + H.sa + 'panorama/catlog_icon.png) no-repeat;', 'display:block;width:10px;height:7px;margin:0 auto;'].join('')
                f.style.cssText = k + 'background-position:-18px 0;'
                e.style.cssText = 'background:#1C1C1C;display:block;position:absolute;width:58px;'
                i.style.cssText = k + 'background-position:0 0;'
                g.style.cssText = 'background:#1C1C1C;display:block;position:absolute;width:58px;'
                g.style.top = this.m.imageHeight - 7 + 'px'
                a.style.cssText = 'position:absolute;top:0px;left:0px;width:60px;'
                e.appendChild(f)
                g.appendChild(i)
                z.V(e, 'mouseover', function () {
                    var a = parseInt(b.style.top, 10)
                    a !== 7 && (f.style.backgroundPosition = '-27px 0')
                    new ub({
                        Hc: 60,
                        $b: vb.Vr,
                        duration: 300,
                        za: function (c) {
                            b.style.top = a + (7 - a) * c + 'px'
                        }
                    })
                })
                z.V(e, 'mouseout', function () {
                    f.style.backgroundPosition = '-18px 0'
                })
                z.V(g, 'mouseover', function () {
                    var a = parseInt(b.style.top, 10)
                       var e = c.m.imageHeight - 14
                    if (!(parseInt(b.offsetHeight, 10) < e)) {
                        var f = e - parseInt(b.offsetHeight, 10) + 7
                        f !== a && (i.style.backgroundPosition = '-9px 0')
                        new ub({
                            Hc: 60,
                            $b: vb.Vr,
                            duration: 300,
                            za: function (c) {
                                b.style.top = a + (f - a) * c + 'px'
                            }
                        })
                    }
                })
                z.V(g, 'mouseout', function () {
                    i.style.backgroundPosition = '0 0'
                })
                a.appendChild(e)
                a.appendChild(g)
                e = O('div')
                e.style.cssText = ['position:absolute;z-index:2001;left:20px;', 'height:' + this.m.imageHeight + 'px;', 'width:62px;overflow:hidden;background:rgb(37,37,37);background:rgba(37,37,37,0.9);'].join('')
                e.appendChild(b)
                e.appendChild(a)
                this.Ai = e
                this.uP = b
                this.P.appendChild(e)
            }
        },
        WU: function () {
            if (this.Di && !(this.Di.length <= 0)) {
                var a = O('div')
                a.innerHTML = this.iz
                a.style.cssText = 'position:absolute;background:#252525'
                this.P.appendChild(a)
                this.Zr = a
                this.Rc.bg.style.left = this.ag.width + 8 + 'px'
                this.Ai && (this.Ai.style.left = parseInt(this.Ai.style.left, 10) + this.ag.width + 8 + 'px')
                var b = this
                z.V(a, 'click', function () {
                    b.W.Cc(b.RV)
                })
            }
        },
        tl: function (a) {
            this.Pj = a
            this.m.showCatalog && (this.Di.length > 0 ? (Xa() ? this.VU() : this.YU(),
            this.Rc.offsetLeft = 60) : (this.Zr && (this.P.removeChild(this.Zr),
            this.Zr = s,
            this.Rc.bg.style.left = '0px'),
            this.Ai && (this.P.removeChild(this.Ai),
            this.Ai = s),
            this.Rc.offsetLeft = 0))
            var b = this.yW(a)
            Xa() && (this.Di && this.Di.length > 0 && this.m.showExit && this.iz) && (this.Rc.offsetLeft += this.ag.width + 8,
            this.Zr ? this.Zr.innerHTML = this.iz : this.WU())
            this.Ih.innerHTML = b
            this.Ih.style.width = (this.ag.width + 8) * a.length + 8 + 'px'
            a = this.P.offsetWidth
            b = this.Ih.offsetWidth
            this.Rc.fs && (b += this.Rc.fs())
            b < a - 2 * this.Rc.ti - this.Rc.offsetLeft ? this.P.style.width = b + this.Rc.offsetLeft + 'px' : (this.P.style.width = isNaN(Number(this.m.maxWidth)) === p ? this.m.maxWidth : this.m.maxWidth + 'px',
            b < this.P.offsetWidth - 2 * this.Rc.ti - this.Rc.offsetLeft && (this.P.style.width = b + this.Rc.offsetLeft + 'px'))
            this.Rc.refresh()
            this.FA = this.Ih.children
            this.Ih.appendChild(this.Tj)
            this.Tj.style.left = '-100000px'
            a = this.LG(this.W.Xb(), this.d1)
            a !== -1 && this.jp(a)
        },
        GW: function (a) {
            for (var b = '', c, e = 0, f = a.length; e < f; e++) {
 c = '<div style="color:white;opacity:0.5;margin:0 35px;float:left;text-align: center"><span  dataIndex="' + a[e].index + '">' + a[e].data + '</span></div>',
                b += c
}
            return b
        },
        lK: function (a) {
            for (var b = '', c, e = 0, f = a.length; e < f; e++) {
 c = '<li class="pano_catlogLi"><span style="display:block;width:100%;" dataIndex="' + a[e].index + '">' + a[e].data + '</span></li>',
                b += c
}
            return b
        },
        yW: function (a) {
            for (var b, c, e, f, g = [], i = this.ag.height, k = this.ag.width, m = 0; m < a.length; m++) {
 b = a[m],
                recoType = b.recoType,
                e = b.panoId,
                f = b.name,
                c = b.heading,
                b = b.pitch,
                c = Oe.yK(e, c, b, 198, 108),
                b = '<a href="javascript:void(0);" class="pano_photo_item" data-index="' + m + '"><img style="width:' + (k - 2) + 'px;height:' + (i - 2) + 'px;" data-index="' + m + '" name="' + f + '" src="' + c + '" alt="' + f + '"/><span class="pano_photo_decs" data-index="' + m + '" style="width:' + k + 'px;font-size:' + Math.floor(i / 6) + 'px; line-height:' + Math.floor(i / 6) + 'px;"><em class="pano_poi_' + recoType + '"></em>' + f + '</span></a>',
                recoType === 3 ? Xa() ? (this.iz = b,
                this.RV = e,
                a.splice(m, 1),
                m--) : (b = '<a href="javascript:void(0);" class="pano_photo_item" data-index="' + m + '"><img style="width:' + (k - 2) + 'px;height:' + (i - 2) + 'px;" data-index="' + m + '" name="' + f + '" src="' + c + '" alt="' + f + '"/><div style="background:rgba(37,37,37,0.5);position:absolute;top:0px;left:0px;width:100%;height:100%;text-align: center;line-height:' + this.m.imageHeight + 'px;" data-index="' + m + '"><img src="' + H.sa + 'panorama/photoexit.png" style="border:none;vertical-align:middle;" data-index="' + m + '" alt=""/></div></a>',
                g.push(b)) : g.push(b)
}
            return g.join('')
        },
        TW: function (a) {
            var b = this
               var c = this.W.Xb()
            c && this.wl.Pw(c, function (e) {
                b.W.Xb() === c && a(e)
            })
        },
        uc: function (a) {
            if (!Za(a) || isNaN(a) || a < Wb || a > 3) { a = this.defaultAnchor }
            var b = this.P
               var c = this.m.offset.width
               var e = this.m.offset.height
            b.style.left = b.style.top = b.style.right = b.style.bottom = 'auto'
            switch (a) {
            case Wb:
                b.style.top = e + 'px'
                b.style.left = c + 'px'
                break
            case Xb:
                b.style.top = e + 'px'
                b.style.right = c + 'px'
                break
            case Yb:
                b.style.bottom = e + 'px'
                b.style.left = c + 'px'
                break
            case 3:
                b.style.bottom = e + 'px',
                b.style.right = c + 'px'
            }
        },
        eP: function () {
            this.cP()
        },
        cP: function () {
            var a = this
            z.V(this.P, 'touchstart', function (a) {
                a.stopPropagation()
            })
            z.V(this.Uj, 'click', function (b) {
                if ((b = (b.srcElement || b.target).getAttribute('data-index')) && b != a.Yc) {
 a.jp(b),
                    a.W.Cc(a.Pj[b].panoId)
}
            })
            z.V(this.Ih, 'mouseover', function (b) {
                b = (b.srcElement || b.target).getAttribute('data-index')
                b !== s && a.oJ(b, p)
            })
            this.W.addEventListener('size_changed', function () {
                isNaN(Number(a.m.maxWidth)) && a.Bk({
                    maxWidth: a.m.maxWidth
                })
            })
        },
        jp: function (a) {
            this.Tj.style.left = this.FA[a].offsetLeft + 8 + 'px'
            this.Tj.setAttribute('data-index', this.FA[a].getAttribute('data-index'))
            this.Yc = a
            this.oJ(a)
        },
        oJ: function (a, b) {
            var c = this.ag.width + 8
               var e = 0
            this.Rc.fs && (e = this.Rc.fs() / 2)
            var f = this.Uj.offsetWidth - 2 * e
               var g = this.Ih.offsetLeft || this.Rc.x
               var g = g - e
               var i = -a * c
            i > g && this.Rc.scrollTo(i + e)
            c = i - c
            g -= f
            c < g && (!b || b && i - g > 8) && this.Rc.scrollTo(c + f + e)
        },
        FX: function () {
            this.Rc = I() ? new uf(this.Uj, {
                eo: t,
                ox: p,
                Zh: t,
                qi: t,
                Mm: t,
                ND: p,
                Yv: p,
                Sw: p
            }) : new zf(this.Uj)
        },
        aa: function () {
            this.P.style.visibility = 'hidden'
        },
        show: function () {
            this.P.style.visibility = 'visible'
        }
    })
    function zf (a) {
        this.P = a
        this.Og = a.children[0]
        this.hr = s
        this.ti = 20
        this.offsetLeft = 0
        this.xa()
    }
    zf.prototype = {
        xa: function () {
            this.Og.style.position = 'relative'
            this.refresh()
            this.Cr()
            this.pB()
        },
        refresh: function () {
            this.Cn = this.P.offsetWidth - this.fs()
            this.cA = -(this.Og.offsetWidth - this.Cn - this.ti)
            this.Ru = this.ti + this.offsetLeft
            this.Og.style.left = this.Ru + 'px'
            this.Og.children[0] && (this.hr = this.Og.children[0].offsetWidth)
            this.bg && (this.bg.children[0].style.marginTop = this.Yq.children[0].style.marginTop = this.bg.offsetHeight / 2 - this.bg.children[0].offsetHeight / 2 + 'px')
        },
        fs: function () {
            return 2 * this.ti
        },
        Cr: function () {
            this.gv = O('div')
            this.gv.innerHTML = '<a class="pano_photo_arrow_l" style="background:rgb(37,37,37);background:rgba(37,37,37,0.9);" href="javascript:void(0)" title="\u4e0a\u4e00\u9875"><span class="pano_arrow_l"></span></a><a class="pano_photo_arrow_r" style="background:rgb(37,37,37);background:rgba(37,37,37,0.9);" href="javascript:void(0)" title="\u4e0b\u4e00\u9875"><span class="pano_arrow_r"></span></a>'
            this.bg = this.gv.children[0]
            this.Yq = this.gv.children[1]
            this.P.appendChild(this.gv)
            this.bg.children[0].style.marginTop = this.Yq.children[0].style.marginTop = this.bg.offsetHeight / 2 - this.bg.children[0].offsetHeight / 2 + 'px'
        },
        pB: function () {
            var a = this
            z.V(this.bg, 'click', function () {
                a.scrollTo(a.Og.offsetLeft + a.Cn)
            })
            z.V(this.Yq, 'click', function () {
                a.scrollTo(a.Og.offsetLeft - a.Cn)
            })
        },
        BT: function () {
            z.R.tc(this.bg, 'pano_arrow_disable')
            z.R.tc(this.Yq, 'pano_arrow_disable')
            var a = this.Og.offsetLeft
            a >= this.Ru && z.R.eb(this.bg, 'pano_arrow_disable')
            a - this.Cn <= this.cA && z.R.eb(this.Yq, 'pano_arrow_disable')
        },
        scrollTo: function (a) {
            a = a < this.Og.offsetLeft ? Math.ceil((a - this.ti - this.Cn) / this.hr) * this.hr + this.Cn + this.ti - 8 : Math.ceil((a - this.ti) / this.hr) * this.hr + this.ti
            a < this.cA ? a = this.cA : a > this.Ru && (a = this.Ru)
            var b = this.Og.offsetLeft
               var c = this
            new ub({
                Hc: 60,
                $b: vb.Vr,
                duration: 300,
                za: function (e) {
                    c.Og.style.left = b + (a - b) * e + 'px'
                },
                finish: function () {
                    c.BT()
                }
            })
        }
    }
    D.Map = Oa
    D.Hotspot = kb
    D.MapType = Dd
    D.Point = J
    D.Pixel = R
    D.Size = P
    D.Bounds = hb
    D.TileLayer = Mc
    D.Projection = jc
    D.MercatorProjection = S
    D.PerspectiveProjection = jb
    D.Copyright = function (a, b, c) {
        this.id = a
        this.fb = b
        this.content = c

        console.log(a, b, c)
    }

    D.Overlay = mc
    D.Label = uc
    D.GroundOverlay = vc
    D.PointCollection = zc
    D.Marker = V
    D.CanvasLayer = Cc
    D.Icon = qc
    D.IconSequence = sc
    D.Symbol = rc
    D.Polyline = Gc
    D.Polygon = Fc
    D.InfoWindow = tc
    D.Circle = Hc
    D.Control = Ub
    D.NavigationControl = lb
    D.GeolocationControl = Zb
    D.OverviewMapControl = nb
    D.CopyrightControl = $b
    D.ScaleControl = mb
    D.MapTypeControl = ob
    D.CityListControl = ac
    D.PanoramaControl = cc
    D.TrafficLayer = Uc
    D.CustomLayer = pb
    D.ContextMenu = fc
    D.MenuItem = ic
    D.LocalSearch = fb
    D.TransitRoute = ee
    D.DrivingRoute = he
    D.WalkingRoute = ie
    D.RidingRoute = je
    D.Autocomplete = xe
    D.RouteSearch = oe
    D.Geocoder = pe
    D.LocalCity = ue
    D.Geolocation = Geolocation
    D.Convertor = lc
    D.BusLineSearch = we
    D.Boundary = ve
    D.Panorama = Ra
    D.PanoramaLabel = De
    D.PanoramaService = ec
    D.PanoramaCoverageLayer = dc
    D.PanoramaFlashInterface = Me
    function U (a, b) {
        for (var c in b) { a[c] = b[c] }
    }
    U(window, {
        BMap: D,
        _jsload2: function (a, b) {
            ja.Zx.UX && ja.Zx.set(a, b)
            K.wU(a, b)
        },
        BMAP_API_VERSION: '2.0'
    })
    var Af = Oa.prototype
    U(Af, {
        getBounds: Af.te,
        getCenter: Af.Bb,
        getMapType: Af.va,
        getSize: Af.Hb,
        setSize: Af.Ae,
        getViewport: Af.vs,
        getZoom: Af.ka,
        centerAndZoom: Af.Ed,
        panTo: Af.ji,
        panBy: Af.tg,
        setCenter: Af.pf,
        setCurrentCity: Af.uE,
        setMapType: Af.wg,
        setViewport: Af.mh,
        setZoom: Af.Qc,
        highResolutionEnabled: Af.Yw,
        zoomTo: Af.yg,
        zoomIn: Af.hF,
        zoomOut: Af.iF,
        addHotspot: Af.eB,
        removeHotspot: Af.bZ,
        clearHotspots: Af.bw,
        checkResize: Af.zU,
        addControl: Af.Mv,
        removeControl: Af.KM,
        getContainer: Af.Ua,
        addContextMenu: Af.Wn,
        removeContextMenu: Af.ap,
        addOverlay: Af.Pa,
        removeOverlay: Af.Sb,
        clearOverlays: Af.lJ,
        openInfoWindow: Af.ad,
        closeInfoWindow: Af.Xc,
        pointToOverlayPixel: Af.Ve,
        overlayPixelToPoint: Af.tM,
        getInfoWindow: Af.$g,
        getOverlays: Af.Mw,
        getPanes: function () {
            return {
                floatPane: this.Wd.BC,
                markerMouseTarget: this.Wd.PD,
                floatShadow: this.Wd.cK,
                labelPane: this.Wd.JD,
                markerPane: this.Wd.RL,
                markerShadow: this.Wd.SL,
                mapPane: this.Wd.Ps,
                vertexPane: this.Wd.$N
            }
        },
        addTileLayer: Af.Me,
        removeTileLayer: Af.Tf,
        pixelToPoint: Af.Ib,
        pointToPixel: Af.Rb,
        setFeatureStyle: Af.J4,
        selectBaseElement: Af.C4,
        setMapStyle: Af.kt,
        enable3DBuilding: Af.ro,
        disable3DBuilding: Af.lV,
        getPanorama: Af.os,
        initIndoorLayer: Af.GX,
        setNormalMapDisplay: Af.gN,
        setMapStyleV2: Af.GZ,
        setBMapCopyrightOffset: Af.tE,
        getVectorContainer: Af.hX
    })
    var Bf = Dd.prototype
    U(Bf, {
        getTileLayer: Bf.bX,
        getMinZoom: Bf.aj,
        getMaxZoom: Bf.Xh,
        getProjection: Bf.nk,
        getTextColor: Bf.cm,
        getTips: Bf.ss
    })
    U(window, {
        BMAP_NORMAL_MAP: Pa,
        BMAP_PERSPECTIVE_MAP: Sa,
        BMAP_SATELLITE_MAP: ab,
        BMAP_HYBRID_MAP: Va
    })
    var Cf = S.prototype
    U(Cf, {
        lngLatToPoint: Cf.qg,
        pointToLngLat: Cf.oj
    })
    var Df = jb.prototype
    U(Df, {
        lngLatToPoint: Df.qg,
        pointToLngLat: Df.oj
    })
    var Ef = hb.prototype
    U(Ef, {
        equals: Ef.oc,
        containsPoint: Ef.Ar,
        containsBounds: Ef.LU,
        intersects: Ef.Ds,
        extend: Ef.extend,
        getCenter: Ef.Bb,
        isEmpty: Ef.lj,
        getSouthWest: Ef.Se,
        getNorthEast: Ef.Lf,
        toSpan: Ef.TE
    })
    var Ff = mc.prototype
    U(Ff, {
        isVisible: Ff.Nc,
        show: Ff.show,
        hide: Ff.aa
    })
    mc.getZIndex = mc.pk
    var Gf = ib.prototype
    U(Gf, {
        openInfoWindow: Gf.ad,
        closeInfoWindow: Gf.Xc,
        enableMassClear: Gf.Yi,
        disableMassClear: Gf.nV,
        show: Gf.show,
        hide: Gf.aa,
        getMap: Gf.Iw,
        addContextMenu: Gf.Wn,
        removeContextMenu: Gf.ap
    })
    var Hf = V.prototype
    U(Hf, {
        setIcon: Hf.Tb,
        getIcon: Hf.Do,
        setPosition: Hf.ua,
        getPosition: Hf.ja,
        setOffset: Hf.ie,
        getOffset: Hf.cj,
        getLabel: Hf.UC,
        setLabel: Hf.Dm,
        setTitle: Hf.Dc,
        setTop: Hf.ni,
        enableDragging: Hf.Wb,
        disableDragging: Hf.UB,
        setZIndex: Hf.pp,
        getMap: Hf.Iw,
        setAnimation: Hf.Cm,
        setShadow: Hf.Sx,
        hide: Hf.aa,
        setRotation: Hf.lp,
        getRotation: Hf.CK
    })
    U(window, {
        BMAP_ANIMATION_DROP: 1,
        BMAP_ANIMATION_BOUNCE: 2
    })
    var If = uc.prototype
    U(If, {
        setStyle: If.Ld,
        setStyles: If.mi,
        setContent: If.cd,
        setPosition: If.ua,
        getPosition: If.ja,
        setOffset: If.ie,
        getOffset: If.cj,
        setTitle: If.Dc,
        setZIndex: If.pp,
        getMap: If.Iw,
        getContent: If.jk
    })
    var Jf = qc.prototype
    U(Jf, {
        setImageUrl: Jf.aN,
        setSize: Jf.Ae,
        setAnchor: Jf.uc,
        setImageOffset: Jf.jt,
        setImageSize: Jf.BZ,
        setInfoWindowAnchor: Jf.EZ,
        setPrintImageUrl: Jf.PZ
    })
    var Kf = tc.prototype
    U(Kf, {
        redraw: Kf.he,
        setTitle: Kf.Dc,
        setContent: Kf.cd,
        getContent: Kf.jk,
        getPosition: Kf.ja,
        enableMaximize: Kf.Xg,
        disableMaximize: Kf.tw,
        isOpen: Kf.Za,
        setMaxContent: Kf.lt,
        maximize: Kf.nx,
        enableAutoPan: Kf.Wr
    })
    var Lf = oc.prototype
    U(Lf, {
        getPath: Lf.Re,
        setPath: Lf.je,
        setPositionAt: Lf.Fm,
        getStrokeColor: Lf.ZW,
        setStrokeWeight: Lf.op,
        getStrokeWeight: Lf.FK,
        setStrokeOpacity: Lf.mp,
        getStrokeOpacity: Lf.$W,
        setFillOpacity: Lf.it,
        getFillOpacity: Lf.tW,
        setStrokeStyle: Lf.np,
        getStrokeStyle: Lf.EK,
        getFillColor: Lf.sW,
        getBounds: Lf.te,
        enableEditing: Lf.ff,
        disableEditing: Lf.mV,
        getEditing: Lf.pW
    })
    var Mf = Hc.prototype
    U(Mf, {
        setCenter: Mf.pf,
        getCenter: Mf.Bb,
        getRadius: Mf.AK,
        setRadius: Mf.qf
    })
    var Nf = Fc.prototype
    U(Nf, {
        getPath: Nf.Re,
        setPath: Nf.je,
        setPositionAt: Nf.Fm
    })
    var Of = kb.prototype
    U(Of, {
        getPosition: Of.ja,
        setPosition: Of.ua,
        getText: Of.eD,
        setText: Of.ut
    })
    J.prototype.equals = J.prototype.oc
    R.prototype.equals = R.prototype.oc
    P.prototype.equals = P.prototype.oc
    U(window, {
        BMAP_ANCHOR_TOP_LEFT: Wb,
        BMAP_ANCHOR_TOP_RIGHT: Xb,
        BMAP_ANCHOR_BOTTOM_LEFT: Yb,
        BMAP_ANCHOR_BOTTOM_RIGHT: 3
    })
    var Pf = Ub.prototype
    U(Pf, {
        setAnchor: Pf.uc,
        getAnchor: Pf.HC,
        setOffset: Pf.ie,
        getOffset: Pf.cj,
        show: Pf.show,
        hide: Pf.aa,
        isVisible: Pf.Nc,
        toString: Pf.toString
    })
    var Qf = lb.prototype
    U(Qf, {
        getType: Qf.Ko,
        setType: Qf.Gm
    })
    U(window, {
        BMAP_NAVIGATION_CONTROL_LARGE: 0,
        BMAP_NAVIGATION_CONTROL_SMALL: 1,
        BMAP_NAVIGATION_CONTROL_PAN: 2,
        BMAP_NAVIGATION_CONTROL_ZOOM: 3
    })
    var Rf = nb.prototype
    U(Rf, {
        changeView: Rf.qe,
        setSize: Rf.Ae,
        getSize: Rf.Hb
    })
    var Sf = mb.prototype
    U(Sf, {
        getUnit: Sf.gX,
        setUnit: Sf.BE
    })
    U(window, {
        BMAP_UNIT_METRIC: 'metric',
        BMAP_UNIT_IMPERIAL: 'us'
    })
    var Tf = $b.prototype
    U(Tf, {
        addCopyright: Tf.Nv,
        removeCopyright: Tf.hE,
        getCopyright: Tf.Wl,
        getCopyrightCollection: Tf.OC
    })
    U(window, {
        BMAP_MAPTYPE_CONTROL_HORIZONTAL: bc,
        BMAP_MAPTYPE_CONTROL_DROPDOWN: 1,
        BMAP_MAPTYPE_CONTROL_MAP: 2
    })
    var Uf = Mc.prototype
    U(Uf, {
        getMapType: Uf.va,
        getCopyright: Uf.Wl,
        isTransparentPng: Uf.Ks
    })
    var Vf = fc.prototype
    U(Vf, {
        addItem: Vf.Ov,
        addSeparator: Vf.hB,
        removeSeparator: Vf.jE
    })
    var Wf = ic.prototype
    U(Wf, {
        setText: Wf.ut
    })
    var Xf = X.prototype
    U(Xf, {
        getStatus: Xf.am,
        setSearchCompleteCallback: Xf.ot,
        getPageCapacity: Xf.kf,
        setPageCapacity: Xf.kp,
        setLocation: Xf.Em,
        disableFirstResultSelection: Xf.VB,
        enableFirstResultSelection: Xf.nC,
        gotoPage: Xf.dm,
        searchNearby: Xf.hp,
        searchInBounds: Xf.Bm,
        search: Xf.search
    })
    U(window, {
        BMAP_STATUS_SUCCESS: 0,
        BMAP_STATUS_CITY_LIST: 1,
        BMAP_STATUS_UNKNOWN_LOCATION: Nd,
        BMAP_STATUS_UNKNOWN_ROUTE: 3,
        BMAP_STATUS_INVALID_KEY: 4,
        BMAP_STATUS_INVALID_REQUEST: 5,
        BMAP_STATUS_PERMISSION_DENIED: Od,
        BMAP_STATUS_SERVICE_UNAVAILABLE: 7,
        BMAP_STATUS_TIMEOUT: Pd
    })
    U(window, {
        BMAP_POI_TYPE_NORMAL: 0,
        BMAP_POI_TYPE_BUSSTOP: 1,
        BMAP_POI_TYPE_BUSLINE: 2,
        BMAP_POI_TYPE_SUBSTOP: 3,
        BMAP_POI_TYPE_SUBLINE: 4
    })
    U(window, {
        BMAP_TRANSIT_POLICY_RECOMMEND: 0,
        BMAP_TRANSIT_POLICY_LEAST_TIME: 4,
        BMAP_TRANSIT_POLICY_LEAST_TRANSFER: 1,
        BMAP_TRANSIT_POLICY_LEAST_WALKING: 2,
        BMAP_TRANSIT_POLICY_AVOID_SUBWAYS: 3,
        BMAP_TRANSIT_POLICY_FIRST_SUBWAYS: 5,
        BMAP_LINE_TYPE_BUS: 0,
        BMAP_LINE_TYPE_SUBWAY: 1,
        BMAP_LINE_TYPE_FERRY: 2,
        BMAP_LINE_TYPE_TRAIN: 3,
        BMAP_LINE_TYPE_AIRPLANE: 4,
        BMAP_LINE_TYPE_COACH: 5
    })
    U(window, {
        BMAP_TRANSIT_TYPE_POLICY_TRAIN: 0,
        BMAP_TRANSIT_TYPE_POLICY_AIRPLANE: 1,
        BMAP_TRANSIT_TYPE_POLICY_COACH: 2
    })
    U(window, {
        BMAP_INTERCITY_POLICY_LEAST_TIME: 0,
        BMAP_INTERCITY_POLICY_EARLY_START: 1,
        BMAP_INTERCITY_POLICY_CHEAP_PRICE: 2
    })
    U(window, {
        BMAP_TRANSIT_TYPE_IN_CITY: 0,
        BMAP_TRANSIT_TYPE_CROSS_CITY: 1
    })
    U(window, {
        BMAP_TRANSIT_PLAN_TYPE_ROUTE: 0,
        BMAP_TRANSIT_PLAN_TYPE_LINE: 1
    })
    var Yf = de.prototype
    U(Yf, {
        clearResults: Yf.Pe
    })
    fe = ee.prototype
    U(fe, {
        setPolicy: fe.nt,
        toString: fe.toString,
        setPageCapacity: fe.kp,
        setIntercityPolicy: fe.cN,
        setTransitTypePolicy: fe.lN
    })
    U(window, {
        BMAP_DRIVING_POLICY_DEFAULT: 0,
        BMAP_DRIVING_POLICY_AVOID_HIGHWAYS: 3,
        BMAP_DRIVING_POLICY_AVOID_CONGESTION: 5,
        BMAP_DRIVING_POLICY_FIRST_HIGHWAYS: 4
    })
    U(window, {
        BMAP_MODE_DRIVING: 'driving',
        BMAP_MODE_TRANSIT: 'transit',
        BMAP_MODE_WALKING: 'walking',
        BMAP_MODE_NAVIGATION: 'navigation'
    })
    var Zf = oe.prototype
    U(Zf, {
        routeCall: Zf.WM
    })
    U(window, {
        BMAP_HIGHLIGHT_STEP: 1,
        BMAP_HIGHLIGHT_ROUTE: 2
    })
    U(window, {
        BMAP_ROUTE_TYPE_DRIVING: Rd,
        BMAP_ROUTE_TYPE_WALKING: Qd,
        BMAP_ROUTE_TYPE_RIDING: Sd
    })
    U(window, {
        BMAP_ROUTE_STATUS_NORMAL: Td,
        BMAP_ROUTE_STATUS_EMPTY: 1,
        BMAP_ROUTE_STATUS_ADDRESS: 2
    })
    var $f = he.prototype
    U($f, {
        setPolicy: $f.nt
    })
    var ag = xe.prototype
    U(ag, {
        show: ag.show,
        hide: ag.aa,
        setTypes: ag.AE,
        setLocation: ag.Em,
        search: ag.search,
        setInputValue: ag.Px
    })
    U(pb.prototype, {})
    var cg = ve.prototype
    U(cg, {
        get: cg.get
    })
    U(dc.prototype, {})
    U(window, {
        BMAP_POINT_DENSITY_HIGH: 200,
        BMAP_POINT_DENSITY_MEDIUM: Xc,
        BMAP_POINT_DENSITY_LOW: 50
    })
    U(window, {
        BMAP_POINT_SHAPE_STAR: 1,
        BMAP_POINT_SHAPE_WATERDROP: 2,
        BMAP_POINT_SHAPE_CIRCLE: wc,
        BMAP_POINT_SHAPE_SQUARE: 4,
        BMAP_POINT_SHAPE_RHOMBUS: 5
    })
    U(window, {
        BMAP_POINT_SIZE_TINY: 1,
        BMAP_POINT_SIZE_SMALLER: 2,
        BMAP_POINT_SIZE_SMALL: 3,
        BMAP_POINT_SIZE_NORMAL: xc,
        BMAP_POINT_SIZE_BIG: 5,
        BMAP_POINT_SIZE_BIGGER: 6,
        BMAP_POINT_SIZE_HUGE: 7
    })
    U(window, {
        BMap_Symbol_SHAPE_CAMERA: 11,
        BMap_Symbol_SHAPE_WARNING: 12,
        BMap_Symbol_SHAPE_SMILE: 13,
        BMap_Symbol_SHAPE_CLOCK: 14,
        BMap_Symbol_SHAPE_POINT: 9,
        BMap_Symbol_SHAPE_PLANE: 10,
        BMap_Symbol_SHAPE_CIRCLE: 1,
        BMap_Symbol_SHAPE_RECTANGLE: 2,
        BMap_Symbol_SHAPE_RHOMBUS: 3,
        BMap_Symbol_SHAPE_STAR: 4,
        BMap_Symbol_SHAPE_BACKWARD_CLOSED_ARROW: 5,
        BMap_Symbol_SHAPE_FORWARD_CLOSED_ARROW: 6,
        BMap_Symbol_SHAPE_BACKWARD_OPEN_ARROW: 7,
        BMap_Symbol_SHAPE_FORWARD_OPEN_ARROW: 8
    })
    U(window, {
        BMAP_CONTEXT_MENU_ICON_ZOOMIN: gc,
        BMAP_CONTEXT_MENU_ICON_ZOOMOUT: hc
    })
    U(window, {
        BMAP_SYS_DRAWER: Na,
        BMAP_SVG_DRAWER: 1,
        BMAP_VML_DRAWER: 2,
        BMAP_CANVAS_DRAWER: 3,
        BMAP_SVG_DRAWER_FIRST: 4
    })
    D.UT()
    D.S_()
}
)()
